Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
3 Views

MKL DGESVDX on Linux Invalid Parameter 19

Jump to solution

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

Accepted Solutions
Highlighted
Black Belt
3 Views

Your *.TXT files in #4

Jump to solution

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
Highlighted
Black Belt
3 Views

The MKL forum is here.

Jump to solution

The MKL forum is here.

Steve (aka "Doctor Fortran") - https://stevelionel.com/drfortran
0 Kudos
Highlighted
Black Belt
3 Views

When you post your question

Jump to solution

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
Highlighted
3 Views

Dear Intel Support,

Jump to solution

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
Highlighted
Black Belt
4 Views

Your *.TXT files in #4

Jump to solution

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
Highlighted
3 Views

Thank you.  Using the lp64

Jump to solution

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
Highlighted
Black Belt
3 Views

Quote:gilmour, arthur wrote:

Jump to solution

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