Hello,
In an offloaded region of a Fortran90 application, I want to call MKL routines (dgetri/dgetrf) in a sequential way, that is, each thread on the MIC calls these routines with its own data. They aren't multithreaded calls.
I use the Intel® Math Kernel Library Link Line Advisor (v4.4) .
For : Linux / Compiler assisted offload / Intel Fortran / Dynamic / LP64 / Sequential , I get back :
link line : -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm
compiler options : -I${MKLROOT}/include -offload-attribute-target=mic -offload-option,mic,compiler," -L${MKLROOT}/lib/mic -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"
So I use them, I successfully compile the application and run my code : it crashes on the first call to a MKL routine (here dgetri) with the following error message :
On the sink, dlopen() returned NULL. The result of dlerror() is "/var/volatile/tmp/coi_procs/1/8056/load_lib/ifortoutZ78m5J: undefined symbol: dgetri_" On the remote process, dlopen() failed. The error message sent back from the sink is /var/volatile/tmp/coi_procs/1/8056/load_lib/ifortoutZ78m5J: undefined symbol: dgetri_ offload error: cannot load library to the device 0 (error code 20)
The environment variables for the compiler, for the MKL are set with the proper scripts, for example
echo $MIC_LD_LIBRARY_PATH /opt/intel/mic/coi/device-linux-release/lib:/opt/intel/mic/myo/lib: /opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/mic:/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic: /opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/mic:/opt/intel/composer_xe_2013_sp1.2.144/mpirt/lib/mic: /opt/intel/mic/coi/device-linux-release/lib:/opt/intel/mic/myo/lib:/opt/intel/mic/coi/device-linux-release/lib: /opt/intel/mic/myo/lib:/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/mic: /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic:/opt/intel/composer_xe_2013_sp1.2.144/tbb/lib/mic
(Carriage returns are mine, for readability)
I try the env. var. OFFLOAD_REPORT but I don't get anything else.
So could someone tell me what's going wrong with compile or link step ?
Moreover, is there a place where I can find the signification of error messages received during runtime on the MIC ? For example, in other situations, I got the following message
offload error: cannot start process on the device 0 (error code 22)
but micctrl tells me everything's fine.
Thank you in advance for your advices.
Regards
Guy.