<?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 Hi Sem, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072757#M22366</link>
    <description>&lt;P&gt;Hi Sem,&lt;/P&gt;

&lt;P&gt;Please refer this &lt;A href="https://software.intel.com/en-us/node/522291"&gt;link of sample&lt;/A&gt; for parallel computing with one common descriptor/multiple descriptor. Thanks.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;BR /&gt;
	Fiona&lt;/P&gt;</description>
    <pubDate>Thu, 06 Apr 2017 04:01:48 GMT</pubDate>
    <dc:creator>Zhen_Z_Intel</dc:creator>
    <dc:date>2017-04-06T04:01:48Z</dc:date>
    <item>
      <title>Problem with mkl fft dynamic array</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072754#M22363</link>
      <description>&lt;DIV style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 12.8px;"&gt;
	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;Hi, I want to use the mklfft with multithreading, but I faced the problem. I got an error - Segmentation fault (core dumped) even when I just created the simple 2D dimension dynamic array. Also, I have checked the multithread example with static array, it worked perfectly, but when I created dynamic array, it gave me an error. Could you tell me what is wrong I am doing, please?&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&lt;STRONG&gt;This is my code:&lt;/STRONG&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 12.8px;"&gt;#include "mkl_dfti.h"&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;#include &amp;lt;omp.h&amp;gt;&lt;/DIV&gt;

	&lt;DIV&gt;#include &amp;lt;math.h&amp;gt;&lt;/DIV&gt;

	&lt;DIV&gt;#include &amp;lt;complex.h&amp;gt;&lt;/DIV&gt;

	&lt;DIV&gt;#include &amp;lt;float.h&amp;gt;&lt;/DIV&gt;

	&lt;DIV&gt;#include &amp;lt;sys/time.h&amp;gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;int main(int argc, char *argv[])&lt;/DIV&gt;

	&lt;DIV&gt;{&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int k, j, N = atoi(argv[1]);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; MKL_Complex8 **data = malloc(N*sizeof(MKL_Complex8*)&lt;WBR /&gt;);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for(k=0; k&amp;lt;N; k++){&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;data&lt;K&gt; = malloc(N*sizeof(MKL_Complex8))&lt;WBR /&gt;;&lt;/K&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf(&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; "Before FFT: N %d.\n",&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; N);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; MKL_LONG len[2] = {N, N};&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; DFTI_DESCRIPTOR_HANDLE FFT;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int th;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("Create...\n");&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; DftiCreateDescriptor (&amp;amp;FFT, DFTI_SINGLE, DFTI_COMPLEX, 2, len);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; DftiCommitDescriptor (FFT);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("Execute...\n");&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; struct timeval start, end;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; gettimeofday(&amp;amp;start, NULL);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; DftiComputeForward (FFT, data);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; DftiFreeDescriptor (&amp;amp;FFT);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; gettimeofday(&amp;amp;end, NULL);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; double tstart = start.tv_sec + start.tv_usec/1000000.;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; double tend = end.tv_sec + end.tv_usec/1000000.;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; double t_sec = (tend - tstart);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int S = N*N;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; double speed = (double) 5*S*log2(S)/t_sec*1e-6;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("Time: %0.6f, Speed: %0.6f\n", t_sec, speed);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for(j=0; j&amp;lt;N; j++) {&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;free(data&lt;J&gt;);&lt;/J&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; free(data);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return 0;&lt;/DIV&gt;

	&lt;DIV&gt;}&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 03 Apr 2017 12:22:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072754#M22363</guid>
      <dc:creator>Semen_K_</dc:creator>
      <dc:date>2017-04-03T12:22:06Z</dc:date>
    </item>
    <item>
      <title>Dear customer,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072755#M22364</link>
      <description>&lt;P&gt;Dear customer,&lt;/P&gt;

&lt;P&gt;The MKL FFT function for execution's required input datatype is pointer for complex/floating array, not address of pointer. You probably need define the data as&amp;nbsp;MKL_Complex8 * which size is N*N. Please do following work:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;MKL_Complex8 *data = (MKL_Complex8*)malloc(N*N*sizeof(MKL_Complex8));
/*MKL_Complex8 **data =(MKL_Complex8 **) malloc(N*sizeof(MKL_Complex8*));
    for(k=0; k&amp;lt;N*N; k++){
        data&lt;K&gt; = (MKL_Complex8*)malloc(N*sizeof(MKL_Complex8));
    }*/
....

/*for(j=0; j&amp;lt;N; j++) {
    free(data&lt;J&gt;);
}*/
free(data);&lt;/J&gt;&lt;/K&gt;&lt;/PRE&gt;

&lt;P&gt;You could refer FFT &lt;A href="https://software.intel.com/en-us/node/522291"&gt;sample &lt;/A&gt;to write.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;BR /&gt;
	Fiona&lt;/P&gt;</description>
      <pubDate>Wed, 05 Apr 2017 08:45:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072755#M22364</guid>
      <dc:creator>Zhen_Z_Intel</dc:creator>
      <dc:date>2017-04-05T08:45:35Z</dc:date>
    </item>
    <item>
      <title>Dear Fiona,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072756#M22365</link>
      <description>&lt;P&gt;Dear Fiona,&lt;/P&gt;

&lt;P&gt;Thanks for your reply. I have tried it, and it works, but I need to do my computations in parallel, so, I need to each thread has it's own data. I got it that I have to pass array (not multidim array) to the function, but I need to find the way to parallelize it. For instance,&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;for (int i=0; i&amp;lt;numthreads; i++)
       DftiComputeForward (FFT, x&lt;I&gt;);&lt;/I&gt;&lt;/PRE&gt;

&lt;P&gt;Now, with one pointer, if I do like &amp;amp;x[i*N/numthreads*N] it is not working.&lt;/P&gt;

&lt;P&gt;Thanks,&lt;BR /&gt;
	Sem&lt;/P&gt;</description>
      <pubDate>Wed, 05 Apr 2017 09:54:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072756#M22365</guid>
      <dc:creator>Semen_K_</dc:creator>
      <dc:date>2017-04-05T09:54:56Z</dc:date>
    </item>
    <item>
      <title>Hi Sem,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072757#M22366</link>
      <description>&lt;P&gt;Hi Sem,&lt;/P&gt;

&lt;P&gt;Please refer this &lt;A href="https://software.intel.com/en-us/node/522291"&gt;link of sample&lt;/A&gt; for parallel computing with one common descriptor/multiple descriptor. Thanks.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;BR /&gt;
	Fiona&lt;/P&gt;</description>
      <pubDate>Thu, 06 Apr 2017 04:01:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Problem-with-mkl-fft-dynamic-array/m-p/1072757#M22366</guid>
      <dc:creator>Zhen_Z_Intel</dc:creator>
      <dc:date>2017-04-06T04:01:48Z</dc:date>
    </item>
  </channel>
</rss>

