<?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 There's no support for 64-bit in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979328#M17347</link>
    <description>&lt;P&gt;There's no support for 64-bit integers in MKL for IA32.&amp;nbsp; It comes with the ilp64 libraries for Intel64.&lt;/P&gt;</description>
    <pubDate>Tue, 04 Jun 2013 02:05:09 GMT</pubDate>
    <dc:creator>TimP</dc:creator>
    <dc:date>2013-06-04T02:05:09Z</dc:date>
    <item>
      <title>getrf Fortran 77 Call Corrupts Integers</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979327#M17346</link>
      <description>&lt;P&gt;I have a helper subroutine that basically calls the MKL getrf/getrs functions like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;[fortran]&lt;/P&gt;
&lt;P&gt;&amp;nbsp; INTERFACE GETRF&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBROUTINE SGETRF(M,N,A,NMAX,IR,ISING)&lt;BR /&gt;&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; INTEGER NMAX,M,N,ISING&lt;BR /&gt;&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; INTEGER, DIMENSION(NMAX) :: IR&lt;BR /&gt;&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; REAL(4), DIMENSION(NMAX,NMAX) :: A&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END SUBROUTINE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBROUTINE DGETRF(M,N,A,NMAX,IR,ISING)&lt;BR /&gt;&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; INTEGER NMAX,M,N,ISING&lt;BR /&gt;&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; INTEGER, DIMENSION(NMAX) :: IR&lt;BR /&gt;&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; REAL(8), DIMENSION(NMAX,NMAX) :: A&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END SUBROUTINE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END INTERFACE GETRF&lt;BR /&gt;C&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTERFACE GETRS&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBROUTINE SGETRS(TRANS,M,N,A,NMAX,IR,B,NMAX2,ISING)&lt;BR /&gt;&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; INTEGER NMAX,NMAX2,M,N,ISING&lt;BR /&gt;&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; INTEGER, DIMENSION(NMAX) :: IR&lt;BR /&gt;&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; CHARACTER TRANS&lt;BR /&gt;&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; REAL(4), DIMENSION(NMAX) :: B&lt;BR /&gt;&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; REAL(4), DIMENSION(NMAX,NMAX) :: A&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END SUBROUTINE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBROUTINE DGETRS(TRANS,M,N,A,NMAX,IR,B,NMAX2,ISING)&lt;BR /&gt;&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; INTEGER NMAX,NMAX2,M,N,ISING&lt;BR /&gt;&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; INTEGER, DIMENSION(NMAX) :: IR&lt;BR /&gt;&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; CHARACTER TRANS&lt;BR /&gt;&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; REAL(8), DIMENSION(NMAX) :: B&lt;BR /&gt;&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; REAL(8), DIMENSION(NMAX,NMAX) :: A&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END SUBROUTINE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END INTERFACE GETRS&lt;/P&gt;
&lt;P&gt;[/fortran]&lt;/P&gt;
&lt;P&gt;I just upgraded from Update 2 to Update 4 of the 2013 compiler (version 13.1.2.190).&lt;/P&gt;
&lt;P&gt;My incoming real arguments can be either real(4) or real(8).&amp;nbsp; My integer arguments are always (project setting /integer_size:64) integer(8).&lt;/P&gt;
&lt;P&gt;If I run this code with real(8) and Win32 project configuration, the IR() array gets corrupted.&amp;nbsp; If I run it with real(8) and x64 project configuration, IR() does not get corrupted.&amp;nbsp; What am I doing wrong now?&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jun 2013 20:15:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979327#M17346</guid>
      <dc:creator>Nick2</dc:creator>
      <dc:date>2013-06-03T20:15:48Z</dc:date>
    </item>
    <item>
      <title>There's no support for 64-bit</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979328#M17347</link>
      <description>&lt;P&gt;There's no support for 64-bit integers in MKL for IA32.&amp;nbsp; It comes with the ilp64 libraries for Intel64.&lt;/P&gt;</description>
      <pubDate>Tue, 04 Jun 2013 02:05:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979328#M17347</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2013-06-04T02:05:09Z</dc:date>
    </item>
    <item>
      <title>If, through your project</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979329#M17348</link>
      <description>&lt;P&gt;If, through your project settings or using a compiler switch, you have chosen default integers that are 8 bytes long, then the interfaces that you gave above are incorrect for 32-bit MKL (as TimP pointed out). The compiler, having been given false information, will produce code that will fail at run time, as you have discovered.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;You have to be very careful about giving correct interfaces to library routines, especially so because the compiler has no access to the source code to the routines in the library. Intel has already provided you the correct interfaces in the various .FI include files that come with MKL. Why not use them?&lt;/P&gt;</description>
      <pubDate>Wed, 05 Jun 2013 09:31:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/getrf-Fortran-77-Call-Corrupts-Integers/m-p/979329#M17348</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2013-06-05T09:31:00Z</dc:date>
    </item>
  </channel>
</rss>

