Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

MKL DGESVDX on Linux Invalid Parameter 19

gilmour__arthur
427 Views

I am developing Code under Windows and now want to build a Linux release.

I updated to the latest Linux Fortran because I am using MKL routine DGESVDX which was not in my previous (2013) version.

However, while the code runs fine under Windows, the call to DGESVDX fails under Linux with the message

Parameter 19 input is not valid.

Parameter 19 is just the dimension of the array which is argument 18 (assuming parameter here means argument).  Increasing it (the value) does not solve the problem.  The particular test case is small (a symmetrix 6x6 matrix with 2 eigenvalues)

The info argument returns -19.

!https://software.intel.com/en-us/mkl-developer-reference-fortran-gesvdx
            !call dgesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, ns, s, u, ldu, vt, ldvt, work, lwork, iwork, info)

My call is

            LLWORK=NL*(17*NL)
            
            CALL dgesvdx('V','N','A', NL, NL, WK, NL, VL, VU, 0, 0, &
                NSV, WK(LSV), WK(LU), NL, WK(LV),NL,WK(LWORK),LLWORK, IWK, INFO)

where NL has a value 6 and LLWORK is the 19th parameter.

As I said, the code works under Windows with exactly the same input (though my Windows compiler release is about 6 months older than the Linux one).

 

0 Kudos
1 Solution
mecej4
Honored Contributor III
427 Views

Your *.TXT files in #4 contain ANSI escape sequences, which make them harder to read.

Here is what I think is the main cause of error, which has little to do with Windows/Linux: the call to the MKL routine contains some integer arguments. These are, by default, 4-byte integers. Yet, you use the ILP64 MKL libraries to link with, so the MKL routine expects to find 8-byte integers among its arguments; as a result, the integer arguments are going to be messed up and checking for them will give slightly misleading messages.

Use the LP64 libraries, instead.

View solution in original post

0 Kudos
6 Replies
Steve_Lionel
Honored Contributor III
427 Views

The MKL forum is here.

0 Kudos
mecej4
Honored Contributor III
427 Views

When you post your question in the MKL forum, it will be helpful if you can post the complete test code and state the compiler version and options used.

You may also try the example code given in the NAG FL document page at https://www.nag.co.uk/numeric/FL/nagdoc_fl26/pdf/f08/f08kmf.pdf . I tried that example with the data (also in that page; I changed the routine names to the corresponding MKL/Lapack names), and it ran fine.

0 Kudos
gilmour__arthur
427 Views

Dear Intel Support,

I attach my test program, my makefile, and the file typescript which has some notes at the top

and output at the bottom.  I apologise for the delay in responding, but I was travelling for two weeks and so away from my linux host.  I also upgraded it from Fedora 22 to Fedora 28 (and reinstalled the software) incase that was the problem.

I am not a regular linux user and am struggling to remember how to drive this system.

I hope you can help me.

 

 

0 Kudos
mecej4
Honored Contributor III
428 Views

Your *.TXT files in #4 contain ANSI escape sequences, which make them harder to read.

Here is what I think is the main cause of error, which has little to do with Windows/Linux: the call to the MKL routine contains some integer arguments. These are, by default, 4-byte integers. Yet, you use the ILP64 MKL libraries to link with, so the MKL routine expects to find 8-byte integers among its arguments; as a result, the integer arguments are going to be messed up and checking for them will give slightly misleading messages.

Use the LP64 libraries, instead.

0 Kudos
gilmour__arthur
427 Views

Thank you.  Using the lp64 library rather than the ilp64 library allowed the job to run properly.

I do not know how to get the linux script command to produce clean (legible) txt files.

 

0 Kudos
mecej4
Honored Contributor III
427 Views

gilmour, arthur wrote:
 I do not know how to get the linux script command to produce clean (legible) txt files.

[PS, added months later] To remove the ANSI sequences and BEL characters from a (intended to be) text file, you can use the Stream Editor sed in Linux/Unix/Cygwin.

sed -e 's/\x1b\[[0-9;]*[a-zA-Z]//g' -e 's/\x1b\][0-9;]*//g' -e 's/\x7//g' typescript.txt > cleanedup.txt

For more details, please see https://superuser.com/questions/380772/removing-ansi-color-codes-from-text-stream .

0 Kudos
Reply