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

misunderstanding of pardiso_64

Chaowen_G_
Beginner
539 Views

Dear sir or madam:

Hi, I need to use mkl pardiso to help me solve problem in 64bit linux system. Because I use 64bit-integer (ILP64 interface layer), I need to make use the function, compile command and library to link is correct. However, I get a little confuse about pardiso_64 function.

From the website http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-61CBF1F8-E590-405A-A043-880016F83D72.htm#GUID-61CBF1F8-E590-405A-A043-880016F83D72

From the Description: You can use it together with the usual LP64 interfaces for the rest of Intel MKL functionality. In other words, if you use 64-bit integer version (pardiso_64), you do not need to re-link your applications with ILP64 libraries. Take into account that pardiso_64 may perform slower than regular pardiso on reordering and symbolic factorization phase.

From the Note: pardiso_64 is supported only in the 64-bit libraries. If pardiso_64 is called from the 32-bit libraries, it returns error =-12.

I know that I should compile my main.cpp program using the following command:

g++ -std=c++11 -O2 -DMKL_ILP64 main.cpp -lmkl_intel_ilp64 -lmkl_core -lmkl_intel_thread -liomp5

And in the main.cpp

mkl_set_num_threads(std::thread::hardware_concurrency());

void*pt[64];
MKL_INT mtype{6};
std::vector<MKL_INT>iparm(64);
pardisoinit(pt,&mtype,iparm.data());
iparm.at(34)=1;

But which function I should call next, just pardiso or pardiso_64?

Moreover, I use mkl11.1 and gcc4.8.2

Thank you very much

 

 

0 Kudos
1 Reply
mecej4
Honored Contributor III
539 Views

The pardiso_64 entry point is provided for use in situations where the LP64 libraries are being used (i.e., 32-bit integer arguments passed to other MKL routines), but 64-bit integer arguments are to be passed to Pardiso.

If you are already using ILP64. the default integer size is 64 bits, and it should make no difference whether you call pardiso() or pardiso_64().
 

0 Kudos
Reply