Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6981 Discussions

Problem linking(?) PARDISO on 64-bit platform

dahlberg
Beginner
437 Views
Hi,
Today I got a new workstation (finally!) and it is fully 64-bit (i.e. both the architecture and the operating system). I wanted to set up a fortran program which previously have been running on my 32-bit desktop.I installed the latest intel compiler and microsoft visual studio development enviroment - Intel Visual Fortran composer XE 2011 Integrated for Microsoft Visual Studio* 2008, 12.0.3471.2008, with the Package ID: w_fcompxe_2011.4.196

The program uses the PARDISO solver so I need to link to that, but I'm having problems. I tried to set it up as I did for the 32-bit version but of course changing to what I thought would be the relevant 64-bit directories;
Additonal include directories (Fortran): C:\\\\mkl\\include
Additonal include directories (Linker):C:\\\\mkl\\lib\\intel64
and then for the additional dependecies under linker I have tried several permutations of what I guess are the relevant libraries to link. What ever I try the compiler just complains that it foundunresolved external symbol_PARDISO reference in function _MAIN_ (which obviously is my main routine)

First of all, how do I know if I should use the _ilp64 or just the _lp64 versions? Whatis the difference?
Static versus dynamic linking - pros/cons, potentialproblems?
Also, i would now like to add some parallel features using openMP - what should I think of with regards to linking and compiler settings once I get started on that?

My 32-bit setting for the additional dependencies are: mkl_solver_sequential.lib mkl_intel_c.lib mkl_sequential.lib mkl_core.lib
and that has been working well.

Best regards,
Carl
0 Kudos
4 Replies
Konstantin_A_Intel
437 Views
Hi Carl,
Please use MKL linker advisor for easier linking MKL with your application:
Regarding ilp64/lp64: usually (I would say in 99.9% of cases) lp64 interface is needed that means your integer data is 32-bit.
Otherwise, ilp64 means long integer arithmetic. In this case MKL will acceptinteger parameters of 64-bit lenght. Sometimes users may want to perform computations in 64-bit integer arithmetic, e.g. if someone has more than 10^32 non-zero elements in the matrix passed to PARDISO.
Regards,
Konstantin
0 Kudos
dahlberg
Beginner
437 Views
Hi Konstantin

First, thanks for clarifying the ilp/lp issue - I'll go with lp.

I think I have tried almost all possible combinations of libraries to link. Istarted with those suggested by the link-line advisor and to be honest I don't think those are the ones giving me problems, but on the other hand - I really have no idea.

To simplify my question; what line do I need to add to get the pardiso solver to be recognized by the compiler? Is it not: mkl_solver_lp64.lib?

I have also tried mkl_solver_lp64_sequential.lib - doesn't help. Maybe the whole ofMKL is not getting linked properly?
0 Kudos
Gennady_F_Intel
Moderator
437 Views

for example: for dynamic linking of test.cpp and parallel Intel MKL supporting the LP64 interface:

icl test.cpp mkl_intel_lp64_dll.libmkl_intel_thread_dll.libmkl_core_dll.liblibiomp5md.lib

0 Kudos
dahlberg
Beginner
437 Views

Problem solved!

It was, ahem..., a so called MATK problem (Moron At The Keybord). For some reason the release platform was set to Win32 instead of x64. I guess thatwas set asthe default, and I should of course have checked it - my bad. Funny error messages though.

Thanks for the help!

0 Kudos
Reply