<?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 Thank you very much for the in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916714#M12641</link>
    <description>&lt;P&gt;Thank you very much for the clarification.&amp;nbsp; I do have another question though.&amp;nbsp; How do I&amp;nbsp;instruct my compiler to ignore function declarations types??? I've never heard of such a thing.&amp;nbsp; Also, would the function still work if i changed double to MKL_Complex16 in the header?&lt;/P&gt;</description>
    <pubDate>Thu, 17 Jan 2013 16:23:19 GMT</pubDate>
    <dc:creator>GTA</dc:creator>
    <dc:date>2013-01-17T16:23:19Z</dc:date>
    <item>
      <title>pblas complex functions don't ask for complex variables</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916712#M12639</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I've been trying to use the parallel blas, pblas, functions in a windows c++ environment and I've run into a problem with the complex functions.&amp;nbsp; I am using the 'z' variation of all the functions (pzgemv for example) to compute solutions to elctromagnetic problems, but unfortunately the function calls seem to expect only a double instead of the MKL_Complex16 that the none parallel versions (zgemv for example) expect.&amp;nbsp; I've attached the mkl_pblas.h file that came with my purchase of MKL.&amp;nbsp; Am I trying to connect to the wrong header file?&amp;nbsp; If so please direct me to the solution.&lt;/P&gt;
&lt;P&gt;Thank you,&lt;/P&gt;
&lt;P&gt;-Gabe&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2013 16:13:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916712#M12639</guid>
      <dc:creator>GTA</dc:creator>
      <dc:date>2013-01-16T16:13:32Z</dc:date>
    </item>
    <item>
      <title>Hi Gabe, thanks for your</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916713#M12640</link>
      <description>&lt;P&gt;Hi Gabe, thanks for your question. This is a good one that many can learn from.&lt;/P&gt;
&lt;P&gt;These functions are a part of the time-tested standard. So we must stick with the original conventions so that people can re-use their old legacy codes, swap out the dependency, and presto, get better performance without rewriting the code.&lt;/P&gt;
&lt;P&gt;That being said, your code should work even though the header may be telling you otherwise. So the recommendation would be to &lt;STRONG&gt;instruct your compiler to ignore function declarations types&lt;/STRONG&gt; (print a warning instead of&amp;nbsp;inducing a compile-time error).&lt;/P&gt;
&lt;P&gt;So this function accepts pointers and you can indeeed&amp;nbsp;feed in (MKL_Complex *).&lt;/P&gt;
&lt;P&gt;Let me know how it goes!&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2013 23:11:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916713#M12640</guid>
      <dc:creator>Noah_C_Intel</dc:creator>
      <dc:date>2013-01-16T23:11:41Z</dc:date>
    </item>
    <item>
      <title>Thank you very much for the</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916714#M12641</link>
      <description>&lt;P&gt;Thank you very much for the clarification.&amp;nbsp; I do have another question though.&amp;nbsp; How do I&amp;nbsp;instruct my compiler to ignore function declarations types??? I've never heard of such a thing.&amp;nbsp; Also, would the function still work if i changed double to MKL_Complex16 in the header?&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jan 2013 16:23:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916714#M12641</guid>
      <dc:creator>GTA</dc:creator>
      <dc:date>2013-01-17T16:23:19Z</dc:date>
    </item>
    <item>
      <title>What compiler are you using?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916715#M12642</link>
      <description>&lt;P&gt;What compiler are you using? I can answer question #1 after that.&lt;/P&gt;
&lt;P&gt;The P-version is the clustered version that uses a more general interface to pass complex numbers. One can essentially use interleaved and non-interleaved complex number components. The ordinary (non-P) version (this is not P-BLAS!) uses the COMPLEX type from the C language i.e., only interleaved complex number components are possible.&lt;/P&gt;
&lt;P&gt;zgemv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is a BLAS level 3 function, and the interface is an industry standard&lt;/P&gt;
&lt;P&gt;pzgemv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is the so-called P-BLAS with MPI support underneath (cluster).&lt;/P&gt;
&lt;P&gt;Pzgemv accepts pointers to double-precision numbers, but also accepts strides. This way one can pass RIRIRIRIRI… or RRRRR+IIIII where R is the real component and I is the imaginary component of a complex number.&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jan 2013 19:05:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916715#M12642</guid>
      <dc:creator>Noah_C_Intel</dc:creator>
      <dc:date>2013-01-17T19:05:15Z</dc:date>
    </item>
    <item>
      <title>I am using c++ in the visual</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916716#M12643</link>
      <description>&lt;P&gt;I am using c++ in the visual studios 2010 windows environment.&lt;/P&gt;
&lt;P&gt;Okay, so if I had a matrix A be n by n, in a processor block that is blocked as nprocs by 1 where nprocs=n for the sake of this example, I should pass pzgemv a local double array A_local of length 2*n and pass the dimensions of A_local as row=ia=1 by column=ij=n even though the actual length is 2*n (one for real and one for imag)?&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jan 2013 19:23:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916716#M12643</guid>
      <dc:creator>GTA</dc:creator>
      <dc:date>2013-01-17T19:23:00Z</dc:date>
    </item>
    <item>
      <title>I think we may be over</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916717#M12644</link>
      <description>&lt;P&gt;I think we may be over-engineering the problem here. Could you try editing the mkl-pblas.h file to match the following? This may be the lowest hanging fruit idea.&lt;/P&gt;
&lt;P&gt;void&amp;nbsp;&amp;nbsp;&amp;nbsp; pzgemv( char *trans, MKL_INT *m, MKL_INT *n, MKL_Complex16 *alpha, MKL_Complex16 *a, MKL_INT *ia, MKL_INT *ja, MKL_INT *desca, MKL_Complex16 *x, MKL_INT *ix, MKL_INT *jx, MKL_INT *descx, MKL_INT *incx, MKL_Complex16 *beta, MKL_Complex16 *y, MKL_INT *iy, MKL_INT *jy, MKL_INT *descy, MKL_INT *incy );&lt;/P&gt;
&lt;P&gt;Option #2 is figuring out how to ignore the function declaration type and just feeding in the MKL_Complex types anyway.&lt;/P&gt;
&lt;P&gt;Option #3 is the RIRI or RRR+IIII idea. I like this one the least because it seems to be the least elegant.&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jan 2013 21:50:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916717#M12644</guid>
      <dc:creator>Noah_C_Intel</dc:creator>
      <dc:date>2013-01-17T21:50:09Z</dc:date>
    </item>
    <item>
      <title>By the way, I found a good</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916718#M12645</link>
      <description>&lt;P&gt;By the way, I found a good resources for the ins and outs for using pblas in a c++ environment. This should address a number of different things and possible follow ups!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://andyspiros.wordpress.com/2011/07/08/an-example-of-blacs-with-c/"&gt;http://andyspiros.wordpress.com/2011/07/08/an-example-of-blacs-with-c/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jan 2013 22:01:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916718#M12645</guid>
      <dc:creator>Noah_C_Intel</dc:creator>
      <dc:date>2013-01-17T22:01:27Z</dc:date>
    </item>
    <item>
      <title>You should be able to</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916719#M12646</link>
      <description>&lt;P&gt;You should be able to suppress any diagnostic with the option “-diag-disable &amp;lt;n&amp;gt;” where n is the diagnostic number (usually this number is printed as part of the diagnostic info output by the compiler).&lt;/P&gt;
&lt;P&gt;So I think all 3 options possible have a path for success. Please let me know which one works best for you, because I'd like to communicate this as a BKM for all future mkl-pblas users.&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jan 2013 22:21:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916719#M12646</guid>
      <dc:creator>Noah_C_Intel</dc:creator>
      <dc:date>2013-01-17T22:21:25Z</dc:date>
    </item>
    <item>
      <title>Gabe,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916720#M12647</link>
      <description>&lt;P&gt;Gabe,&lt;/P&gt;
&lt;P&gt;&amp;gt;&amp;gt;&amp;gt; I've been trying to use the parallel blas, pblas, functions [...]&lt;BR /&gt;Spelling it "Parallel BLAS" suggests that the "other BLAS" (non-P) is not parallel (which is &lt;STRONG&gt;not&lt;/STRONG&gt; true). First, I hope you are aware that PBLAS is about cluster support i.e., MPI (via BLACS) is used. The regular BLAS functions (industry-standard) are parallelized as well, and use multiple threads via OpenMP. To summarize, BLAS and PBLAS are &lt;STRONG&gt;different&lt;/STRONG&gt; interfaces and each is expected to be conformant to its standard.&lt;/P&gt;
&lt;P&gt;What I suggest is: just call &lt;EM&gt;zgemv&lt;/EM&gt; in order to compute the solutions of your electromagnetic problems! I hope that this is easier than you expected, and the little PBLAS tour let you know that your can even use a cluster of computers (if needed) with not much coding effort. Btw, the &lt;EM&gt;pzgemv&lt;/EM&gt; function allows you to pass complex numbers in two different ways: (1) interleaved, and (2) non-interleaved. This is the reason that it seems to expect only double-precision values. For interleaved complex number components (MKL_Complex16), one would essentially pass the address of the real component of the first complex number, and the address of the complex component of the same first complex number along with a stride of two.&lt;/P&gt;
&lt;P&gt;Allow me a last comment: employing multiple threads is kind of the default in Intel MKL (except when you link against the sequential library). You can select your options to link against Intel MKL easily (&lt;A href="http://software.intel.com/sites/products/mkl/MKL_Link_Line_Advisor.html"&gt;http://software.intel.com/sites/products/mkl/MKL_Link_Line_Advisor.html&lt;/A&gt;). Also, you have multiple handles in order to adjust the threading (global, per function-domain, etc.).&lt;/P&gt;
&lt;P&gt;- Hans&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jan 2013 08:40:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pblas-complex-functions-don-t-ask-for-complex-variables/m-p/916720#M12647</guid>
      <dc:creator>Hans_P_Intel</dc:creator>
      <dc:date>2013-01-18T08:40:11Z</dc:date>
    </item>
  </channel>
</rss>

