- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When trying to use the subroutine ZGETRF we get
MKL ERROR: Parameter 4 was incorrect on entry to ZGETRF
Our code is:
The code works fine without the assignment.
The input was taken from the examples directory too.
compilation command:
mpif90 -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -lmkl_core -lmkl_sequential -lmkl_lapack -lmkl_intel_ilp64 zgetrfx.f
execution command:
./a.out < zgetrfx.d
Help would be highly appreciated.
Best regards
Nico Parragh
MKL ERROR: Parameter 4 was incorrect on entry to ZGETRF
Our code is:
[plain]* ZGETRF (F07ARF) Example Program Text
* Mark 15 Release. NAG Copyright 1991.
* .. Parameters ..
INTEGER NIN, NOUT
PARAMETER (NIN=5,NOUT=6)
INTEGER MMAX, NMAX, LDA
PARAMETER (MMAX=8,NMAX=8,LDA=MMAX)
* .. Local Scalars ..
INTEGER I, IFAIL, INFO, J, M, N
* .. Local Arrays ..
COMPLEX*16 A(LDA,NMAX)
COMPLEX*16 B(LDA,NMAX)
INTEGER IPIV(NMAX)
CHARACTER CLABS(1), RLABS(1)
* .. External Subroutines ..
EXTERNAL ZGETRF, X04DBF
* .. Intrinsic Functions ..
INTRINSIC MIN
* .. Executable Statements ..
WRITE (NOUT,*) 'ZGETRF Example Program Results'
* Skip heading in data file
READ (NIN,*)
READ (NIN,*) M, N
IF (M.LE.MMAX .AND. N.LE.NMAX) THEN
*
* Read A from data file
*
READ (NIN,*) ((A(I,J),J=1,N),I=1,M)
B(1:M,1:N)=A(1:M,1:N)
*
* Factorize A
*
CALL ZGETRF(M,N,A,LDA,IPIV,INFO)
*
END IF
STOP
END
[/plain]
which is the code provided in the examples directory. Our change is an assignment of the matrix A to B.The code works fine without the assignment.
The input was taken from the examples directory too.
compilation command:
mpif90 -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -lmkl_core -lmkl_sequential -lmkl_lapack -lmkl_intel_ilp64 zgetrfx.f
execution command:
./a.out < zgetrfx.d
Help would be highly appreciated.
Best regards
Nico Parragh
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Nico,
You are linking ilp64 libraries by -lmkl_intel_ilp64. It assumes that all input integers are 8byte long. In Fortran default integer length is 4byte. So you need one of:
1. Add -i8 flagwhile compiling Fortran sources, so the default integer length will become 8byte.
You are linking ilp64 libraries by -lmkl_intel_ilp64. It assumes that all input integers are 8byte long. In Fortran default integer length is 4byte. So you need one of:
1. Add -i8 flagwhile compiling Fortran sources, so the default integer length will become 8byte.
2. Link with -lmkl_intel_lp64, which assumes 4byte integers on input.
--Alexander
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, this solved the problem!
Best
Nico
Best
Nico
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page