Silverfrost Forums

Welcome to our forums

using MKL

27 May 2010 9:12 #6431

Hi,

I have tried to find it out, but I don't understand enough about linking and compiling to do this.

I want to use only one routine of MKL: from Sparse BLAS Level 2 and Level 3 Routines. I use Plato and have installed the MKL of Intel. How can I access MKL now? I tried this link line advisor: http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/

but I do not even know where I have to insert the commands. I do not know which dll's I have to include or reference either. Will it be easier when I use the Fortran Compiler of Intel?

I would really appreciate any help.

27 May 2010 11:17 #6433

You can create a project in Plato, add your source files and then add a reference to your DLL via the Project Explorer window. You should also access the properties of the DLL by right clicking on the DLL in the Project Explorer window and then select 'Uses STDCALL'.

27 May 2010 12:50 #6439

I have tried to do it by including the 4 libraries from the link line advisor and the blas library. My windows system is 64 bit, but the compiler is not, so I chose IA-32, dynamic library and sequential version : mkl_solver_sequential.lib, mkl_intel_c_dll.lib, mkl_sequential_dll.lib, mkl_core_dll.lib, mkl_blas95.lib

The compilation works without error, but the linking produces the error:

WARNING the following symbols are missing: MKL_SDIASV

which is the routine I want to use.

27 May 2010 1:44 #6440

It is simpler to use DLLs if they are available. The LIBs might be static libraries in which case the object code is added to your exe at link time. Alternatively they might provide stubs that are used at link time so that the DLL can be linked in at run time.

SLINK can use the DLLs directly instead of the the stub libraries. I have assumed the latter in my instructions above.

29 May 2010 4:21 #6452

Quoted from chubb87 I have tried to do it by including the 4 libraries from the link line advisor and the blas library. My windows system is 64 bit, but the compiler is not, so I chose IA-32, dynamic library and sequential version : mkl_solver_sequential.lib, mkl_intel_c_dll.lib, mkl_sequential_dll.lib, mkl_core_dll.lib, mkl_blas95.lib

The compilation works without error, but the linking produces the error:

WARNING the following symbols are missing: MKL_SDIASV

which is the routine I want to use.

The mkl_intel_c_dll.lib uses the IFort/C calling sequence, and is inconsistent with your electing the STDCALL calling sequence on the FTN95 side. Using STDCALL is not necessary, and you may decide whether that suits your needs better than CDECL. If you want to call MKL as STDCALL, the library to use is mkl_intel_s_dll.lib.

Please login to reply.