Quantcast
Channel: Intel® Software - Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library
Viewing all articles
Browse latest Browse all 3005

getrf Fortran 77 Call Corrupts Integers

$
0
0

I have a helper subroutine that basically calls the MKL getrf/getrs functions like this:

 

  INTERFACE GETRF
          SUBROUTINE SGETRF(M,N,A,NMAX,IR,ISING)
              INTEGER NMAX,M,N,ISING
              INTEGER, DIMENSION(NMAX) :: IR
              REAL(4), DIMENSION(NMAX,NMAX) :: A
          END SUBROUTINE
          SUBROUTINE DGETRF(M,N,A,NMAX,IR,ISING)
              INTEGER NMAX,M,N,ISING
              INTEGER, DIMENSION(NMAX) :: IR
              REAL(8), DIMENSION(NMAX,NMAX) :: A
          END SUBROUTINE
      END INTERFACE GETRF
C
      INTERFACE GETRS
          SUBROUTINE SGETRS(TRANS,M,N,A,NMAX,IR,B,NMAX2,ISING)
              INTEGER NMAX,NMAX2,M,N,ISING
              INTEGER, DIMENSION(NMAX) :: IR
              CHARACTER TRANS
              REAL(4), DIMENSION(NMAX) :: B
              REAL(4), DIMENSION(NMAX,NMAX) :: A
          END SUBROUTINE
          SUBROUTINE DGETRS(TRANS,M,N,A,NMAX,IR,B,NMAX2,ISING)
              INTEGER NMAX,NMAX2,M,N,ISING
              INTEGER, DIMENSION(NMAX) :: IR
              CHARACTER TRANS
              REAL(8), DIMENSION(NMAX) :: B
              REAL(8), DIMENSION(NMAX,NMAX) :: A
          END SUBROUTINE
      END INTERFACE GETRS

I just upgraded from Update 2 to Update 4 of the 2013 compiler (version 13.1.2.190).

My incoming real arguments can be either real(4) or real(8).  My integer arguments are always (project setting /integer_size:64) integer(8).

If I run this code with real(8) and Win32 project configuration, the IR() array gets corrupted.  If I run it with real(8) and x64 project configuration, IR() does not get corrupted.  What am I doing wrong now?


Viewing all articles
Browse latest Browse all 3005

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>