<?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 proper way to call MKL routines in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818915#M4560</link>
    <description>Gennady -&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;For the time I quoted, I used these options:&lt;DIV id="_mcePaste"&gt;-O3   &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-unroll  &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-ftrapuv  &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-traceback &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-automatic  &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-static-intel &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;and these libraries:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_solver_lp64&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_intel_lp64&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_lapack95_lp64&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_sequential&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_core&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I think only -O3 is mattered here. (The loop was not unrollable.) I don't know of any chip-specific flags that apply to 64 bit Mac. &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;- Nooj&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Wed, 26 May 2010 14:56:02 GMT</pubDate>
    <dc:creator>nooj</dc:creator>
    <dc:date>2010-05-26T14:56:02Z</dc:date>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818909#M4554</link>
      <description>I have ifort version 11.1.088 on Mac. I have a code that is predominantly F77, with very few F90/95 bits:&lt;DIV&gt;reals are "real*8",ints "integer*4";&lt;/DIV&gt;&lt;DIV&gt;I use modules, intent(), allocatable arrays, and absolutely no pointers.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;What is the proper way to call the higher precision eigenvalue solver for symmetric matrices (DSYEVR)? &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Right now I'm calling DSYEVR directly (because I used ifort's flag "-r8"), and it's giving me problems. I suspect there is a better way. I'm looking for something fast for 3x3 matrices, and with as little fancy memory management as possible. (For instance, I don't know the difference between real*8 and real(8).) &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I see the example program SYEVR_MAIN in syevr.f90 (which never uses the variable ISUPPZ). But I don't see the documentation for the exact call to SYEVR. &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Help?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;- Nooj&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 14 May 2010 21:17:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818909#M4554</guid>
      <dc:creator>nooj</dc:creator>
      <dc:date>2010-05-14T21:17:00Z</dc:date>
    </item>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818910#M4555</link>
      <description>real*8 and real(8) are the same as double precision with Intel Fortran, and probably with any other Fortran you will find for your Mac. Neither are portable. ifort -r8 would change all default real to real(8) but would not affect variables which are declared with a specific data type like real(4) or real(8). I don't think your statement about "calling DSYEVR directly" makes sense; perhaps a working example would help.&lt;BR /&gt;MKL won't be particularly efficient for such small matrices, but it would hardly matter unless you have many of them; certainly it's not evident how "fancy memory management" could enter in.</description>
      <pubDate>Sun, 16 May 2010 04:54:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818910#M4555</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2010-05-16T04:54:14Z</dc:date>
    </item>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818911#M4556</link>
      <description>&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Tim -&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;Thanks for the info on variable declaration. &lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;MKL won't be particularly efficient for such small matrices,&lt;/DIV&gt;&lt;DIV&gt;but it would hardly matter unless you have many of them&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;Actually, I will have many of them; tens to hundreds of millions per run, once the code is running full steam. I'm using MKL because it's the only robust eigensolver I know of. I need both eigenvalues and eigenvectors, and I can't assume the eigenvalues are all distinct. Do you have a better suggestion? Every time I look for robust solvers, I end up with solvers for large systems; mine will always be 3x3 symmetric, positive definite matrices.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;I don't think your statement about "calling DSYEVR directly" makes sense&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;What I meant is there are at least eight ways to call ?syevr between v10.0 and 11.1 (F77_SYEVR, DSYEVR, DSYEVR_MKL95, etc.), and I wasn't sure whether to use the F95 interface, or call the underlying F77 routine.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;perhaps a working example would help.&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;I tried to give an example at&lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=74152" target="_blank"&gt;http://software.intel.com/en-us/forums/showthread.php?t=74152&lt;/A&gt;, but no one had any insight.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;certainly it's not evident how "fancy memory management" could enter in.&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;Every time I try to pull the offending code into a small test, the test never crashes. My main code crashes in random locations, so I thought perhaps I was misusing memory somewhere. I used valgrind, and it gave me thousands of false positives (use of uninitialized variable) and an error I didn't understand right before the crash. (I can post the error in the morning.)&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;- Nooj&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 17 May 2010 03:11:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818911#M4556</guid>
      <dc:creator>nooj</dc:creator>
      <dc:date>2010-05-17T03:11:14Z</dc:date>
    </item>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818912#M4557</link>
      <description>The issue here is a rather simple misunderstanding of how multidimensional arrays are declared and segments passed to Fortran-77 subroutines.&lt;BR /&gt;&lt;BR /&gt;Please see my reply to your earlier &lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=74152"&gt; thread .&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Furthermore, if the matrices whose eigenvalues you want are never going to be anything other than 3 X 3, the characteristic equation&lt;BR /&gt;&lt;BR /&gt; det ( A - \lambda I) = 0&lt;BR /&gt;&lt;BR /&gt;is cubic and you can solve it directly using one of the many available cubic equation solvers.&lt;BR /&gt;</description>
      <pubDate>Sun, 23 May 2010 18:48:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818912#M4557</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2010-05-23T18:48:53Z</dc:date>
    </item>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818913#M4558</link>
      <description>&amp;gt; if the matrices whose eigenvalues you want&lt;DIV&gt;&amp;gt; are never going to be anything other than 3 X 3,&lt;DIV&gt;&amp;gt; the characteristic equationis cubic&lt;/DIV&gt;&lt;DIV&gt;&amp;gt; and you can solve it directly&lt;/DIV&gt;&lt;DIV&gt;&amp;gt; using one of the many available cubic equation solvers.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;True, direct analytic calculation seems to be the fastest method. I also want the eigenvectors, which the intertubes agree can be computed fastest by coding up an analytic solution. &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;That said, the MKL is fast, even on small matrices. I ran a few tests of the MKL with computing 3x3 eigenvalues millions of times, and it was pretty consistent across matrices with different condition numbers: about 100K eigenproblems per second on a single 3.02GHz processor. This is much faster than my other bottlenecks and the serial portions of my code. &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;-f&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 24 May 2010 22:04:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818913#M4558</guid>
      <dc:creator>nooj</dc:creator>
      <dc:date>2010-05-24T22:04:10Z</dc:date>
    </item>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818914#M4559</link>
      <description>Interestingly, if you try to compile your code using Intel compiler with some optimization options enabled, and compare the results for such small sizes. What will be the results?&lt;DIV&gt;--Gennady&lt;/DIV&gt;</description>
      <pubDate>Tue, 25 May 2010 03:46:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818914#M4559</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2010-05-25T03:46:40Z</dc:date>
    </item>
    <item>
      <title>proper way to call MKL routines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818915#M4560</link>
      <description>Gennady -&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;For the time I quoted, I used these options:&lt;DIV id="_mcePaste"&gt;-O3   &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-unroll  &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-ftrapuv  &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-traceback &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-automatic  &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-static-intel &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;and these libraries:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_solver_lp64&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_intel_lp64&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_lapack95_lp64&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_sequential&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-lmkl_core&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I think only -O3 is mattered here. (The loop was not unrollable.) I don't know of any chip-specific flags that apply to 64 bit Mac. &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;- Nooj&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 26 May 2010 14:56:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/proper-way-to-call-MKL-routines/m-p/818915#M4560</guid>
      <dc:creator>nooj</dc:creator>
      <dc:date>2010-05-26T14:56:02Z</dc:date>
    </item>
  </channel>
</rss>

