<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Quote:Igor Astakhov (Intel) in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981450#M21390</link>
    <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Igor Astakhov (Intel) wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;sorry, forum editor reformatted message after submitting, your code example should start&amp;nbsp;from the 3rd line of message...&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" id="dstTextBox" tabindex="0"&gt;Well then, I better use MKL because I'll handle large data arrays. Thanks for the reply.&lt;/DIV&gt;</description>
    <pubDate>Tue, 11 Feb 2014 14:48:11 GMT</pubDate>
    <dc:creator>Ildar_S_</dc:creator>
    <dc:date>2014-02-11T14:48:11Z</dc:date>
    <item>
      <title>Not working multithreading in IPP library</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981447#M21387</link>
      <description>&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" id="dstTextBox" tabindex="0"&gt;Hi all!&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;I use the IPP library for signal processing. Recently I needed to build my app with IPP library and run multithreaded version of FFT.&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;After reading the documentation library, I saw that can be run by specifying the function of a ippSetAfiinity. After starting the program creates threads, but unfortunately they are not used, use only one thread.&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;To build the application I use IPP library v7.1 - x64 for linux.&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" tabindex="0"&gt;Application sample &lt;A href="http://pastebin.com/CUn8EJYY"&gt;http://pastebin.com/CUn8EJYY&lt;/A&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 11 Feb 2014 09:55:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981447#M21387</guid>
      <dc:creator>Ildar_S_</dc:creator>
      <dc:date>2014-02-11T09:55:13Z</dc:date>
    </item>
    <item>
      <title>Hi Ildar,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981448#M21388</link>
      <description>&lt;P&gt;Hi Ildar,&lt;/P&gt;

&lt;P&gt;do you think the following sequence is correct:&lt;/P&gt;

&lt;P class="de2"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="de2"&gt;&lt;SPAN class="br0"&gt;according to the IPP manual (Volume 1, Signal Processing) you'll get wrong magnitude:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="de2"&gt;Arrangement of Forward Fourier Transform Results in Packed Formats - Even Length&lt;BR /&gt;
	Index 0 1 2 3 . . . N-2 N-1 N N+1&lt;BR /&gt;
	Pack R&lt;SUB&gt;0&lt;/SUB&gt; R&lt;SUB&gt;1&lt;/SUB&gt; I&lt;SUB&gt;1&lt;/SUB&gt; R&lt;SUB&gt;2&lt;/SUB&gt; . . . I&lt;SUB&gt;(N-1)/2&lt;/SUB&gt; R&lt;SUB&gt;N/2&lt;/SUB&gt;&lt;/P&gt;

&lt;P class="de2"&gt;&amp;nbsp;So I guess you should perform a shift for pDstC &amp;amp; pDst to 1 point and calculate the first and last points in a special way (considering 0 for image part). Or the most correct way is to use "ppStatus ippsConjPack_32fc_I(Ipp32fc* pSrcDst, int lenDst);" function that expands Pack format to Complex.&lt;/P&gt;

&lt;P class="de2"&gt;Regarding multithreading - IPP FFT is threaded for the very limited number of cases: you CPU must have 2 cores only (with disabled HT)&amp;nbsp; and share cache - for example core-duo. 32f FFT is threaded for orders 13-19, 64f - for 12-18. All other configurations are not supported by multi-threaded version due to several reasons, the main of them is that we can't guarantee better performance in other possible cases. If you use rather&amp;nbsp;big FFT orders and really need multithreded solution - it is better for you to take a look at MKL library that provides threading above IPP FFTs for big FFT orders (MKL provides its own API, but for FFTs uses IPP kernels internally).&lt;/P&gt;

&lt;P class="de2"&gt;regards, Igor&lt;/P&gt;

&lt;OL&gt;
	&lt;LI&gt;status &lt;SPAN class="sy1"&gt;=&lt;/SPAN&gt; &lt;STRONG&gt;ippsFFTFwd_RToPack_32f&lt;/STRONG&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;pSrc.&lt;SPAN class="me1"&gt;get&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;, pDst.&lt;SPAN class="me1"&gt;get&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;, pFFTSpec, pBuffer.&lt;SPAN class="me1"&gt;get&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="sy4"&gt;;&lt;/SPAN&gt;&lt;/LI&gt;
	&lt;LI class="li1"&gt;
		&lt;DIV class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class="kw1"&gt;if&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;status &lt;SPAN class="sy3"&gt;!&lt;/SPAN&gt;&lt;SPAN class="sy1"&gt;=&lt;/SPAN&gt; ippStsNoErr&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt; &lt;SPAN class="kw1"&gt;throw&lt;/SPAN&gt; std&lt;SPAN class="sy4"&gt;::&lt;/SPAN&gt;&lt;SPAN class="me2"&gt;runtime_error&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;ippGetStatusString&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;status&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="sy4"&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li2"&gt;
		&lt;DIV class="de2"&gt;&amp;nbsp;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li1"&gt;
		&lt;DIV class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ipp32fc &lt;SPAN class="sy2"&gt;*&lt;/SPAN&gt;pDstC &lt;SPAN class="sy1"&gt;=&lt;/SPAN&gt; &lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;Ipp32fc&lt;SPAN class="sy2"&gt;*&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;pDst.&lt;SPAN class="me1"&gt;get&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;SPAN class="sy4"&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li2"&gt;
		&lt;DIV class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ipp32s realSz &lt;SPAN class="sy1"&gt;=&lt;/SPAN&gt; fftSz&lt;SPAN class="sy2"&gt;/&lt;/SPAN&gt;&lt;SPAN class="nu0"&gt;2&lt;/SPAN&gt;&lt;SPAN class="sy4"&gt;;&lt;/SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class="co1"&gt;// Exclude zero part. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li1"&gt;
		&lt;DIV class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ipp32s magSz &lt;SPAN class="sy1"&gt;=&lt;/SPAN&gt; realSz&lt;SPAN class="sy2"&gt;/&lt;/SPAN&gt;&lt;SPAN class="nu0"&gt;2&lt;/SPAN&gt;&lt;SPAN class="sy4"&gt;;&lt;/SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class="co1"&gt;// Convert length to complex length.&lt;/SPAN&gt;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li2"&gt;
		&lt;DIV class="de2"&gt;&amp;nbsp;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li1"&gt;
		&lt;DIV class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class="co1"&gt;// Extract magniutde from input signal.&lt;/SPAN&gt;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li2"&gt;
		&lt;DIV class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status &lt;SPAN class="sy1"&gt;=&lt;/SPAN&gt; &lt;STRONG&gt;ippsMagnitude_32fc&lt;/STRONG&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;pDstC, pDst.&lt;SPAN class="me1"&gt;get&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;(&lt;/SPAN&gt;&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;, realSz&lt;SPAN class="br0"&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;
	&lt;/LI&gt;
	&lt;LI class="li2"&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Tue, 11 Feb 2014 13:59:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981448#M21388</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2014-02-11T13:59:10Z</dc:date>
    </item>
    <item>
      <title>sorry, forum editor</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981449#M21389</link>
      <description>&lt;P&gt;sorry, forum editor reformatted message after submitting, your code example should start&amp;nbsp;from the 3rd line of message...&lt;/P&gt;</description>
      <pubDate>Tue, 11 Feb 2014 14:04:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981449#M21389</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2014-02-11T14:04:56Z</dc:date>
    </item>
    <item>
      <title>Quote:Igor Astakhov (Intel)</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981450#M21390</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Igor Astakhov (Intel) wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;sorry, forum editor reformatted message after submitting, your code example should start&amp;nbsp;from the 3rd line of message...&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;DIV class="yt-area-textbox yt-area-textbox__textbox" id="dstTextBox" tabindex="0"&gt;Well then, I better use MKL because I'll handle large data arrays. Thanks for the reply.&lt;/DIV&gt;</description>
      <pubDate>Tue, 11 Feb 2014 14:48:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Not-working-multithreading-in-IPP-library/m-p/981450#M21390</guid>
      <dc:creator>Ildar_S_</dc:creator>
      <dc:date>2014-02-11T14:48:11Z</dc:date>
    </item>
  </channel>
</rss>

