Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
7234 Discussions

Problem linking(?) PARDISO on 64-bit platform

dahlberg
Beginner
1,056 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
1,056 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
1,056 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
1,056 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
1,056 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