View previous topic :: View next topic |
Author |
Message |
chubb87
Joined: 26 May 2010 Posts: 2
|
Posted: Thu May 27, 2010 10:12 am Post subject: using MKL |
|
|
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. |
|
Back to top |
|
 |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 8210 Location: Salford, UK
|
Posted: Thu May 27, 2010 12:17 pm Post subject: |
|
|
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". |
|
Back to top |
|
 |
chubb87
Joined: 26 May 2010 Posts: 2
|
Posted: Thu May 27, 2010 1:50 pm Post subject: subroutine not found |
|
|
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. |
|
Back to top |
|
 |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 8210 Location: Salford, UK
|
Posted: Thu May 27, 2010 2:44 pm Post subject: |
|
|
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. |
|
Back to top |
|
 |
mecej4
Joined: 31 Oct 2006 Posts: 1899
|
Posted: Sat May 29, 2010 5:21 pm Post subject: Re: subroutine not found |
|
|
chubb87 wrote: | 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. |
|
Back to top |
|
 |
|