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

How to use MKL in MSVC 2005(Intel Fortran)

Ying_H_Intel
Employee
331 Views
Dear ALL,

I noticed some users have probelms when use MKL in MSVC 2005(Intel Fortran). I upload a MSVC 2005 project (Intel fortran 11.0.0.074 IA32)for your reference.

Some notable things:

1) which kind of application: ia32, em64t or ia64 application.
you may make sure which target machine you need your application run on?
ia32: 32 bit application.
em64t: Intel 64 bit application
IA64: Intel Itanium 64bit application.

For example, most ofus may build ia32or em64t application on a xeon machine with windows*. Then in MSVC environment,Check the project configuration manager=> active platform.
They are "ia32" or "X64" (which is corresponding to em64t).

2. Which MKLlibrary you need link into.

Here is FAQ about how to use MKL in MSVC. You may add the include path, library path as the article show.

But about library path, as above, you need enter rigth directory:
they
\ia32, for ia32 application
\em64t, for X64 application
\em64t, for IA64 application
they can't be mixed

Aboub the library you need. There are many libraries under MKL lib directory. Which one you needs?

We have on-line KB article Intel Math Kernel Library Link Line Advisor After choose it, you can get which libraries you need to list.

In general, mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.libare enough for any ia32 windows application.

3. About CVF support,
CVF and Intel Fortran compiler use different call convention by default:
CVF: stdcall
Intel Fortran,C Compiler: cdecl (default interface of the Microsoft Visual C* application)

MKL support both of them on ia32 platform, but if you areportingfrom CVF to intel Fortran,you may take care the required library:mkl_intel_s or mkl_intel_c.lib

  • Using the CVF compiler
    the CVF compiler will link with mkl_intel_s[_dll].lib if routines are
    compiled with the default interface. However, if you compile with the option
    /iface=(cref,nomixed_str_len_arg), the compiler will link with
    mkl_intel_c[_dll].lib .

Using the Intel Fortran compiler

The Intel Fortran compiler will link with mkl_intel_c[_dll].lib by default. If the
/Gm option is used, call mkl_intel_s[_dll].lib (/Gm enables CVF and Powerstation
calling convention compatibility, so does /iface:cvf).

Additionally, if you are porting CVF applicationto X64 or IA64 platform with Intel Fortran compiler and MKL. Please note, MKL don't provide em64t and IA64 CVF interface support. So you must to link mkl_intel_lp64|ilp64, mkl_intel_thread, mkl_core. and remove the compiler option /Gm or /iface:cvf.

4. Regarding Lapack95, blas95 interface library usage,we may discuss it laterif you have interest.

Best Regards,
Ying

0 Kudos
2 Replies
TimP
Honored Contributor III
331 Views
You might point out, since Intel 11.0 compilers (and ifort 10 professional), there is an integrated MKL installation option. This avoids the necessity for separate settings of MKL path, and ensures that the MKL architecture choice matches the compiler. It implies also that MKL updates are distributed in compiler updates.
0 Kudos
Ying_H_Intel
Employee
331 Views

Hi Tim,

Thank you for the message. Right, the recent MKLversion have provided a "build" menu in MSVC environment.Click one button, all of environment setting and required library are ready in your project.(as below image).





But unfortuntely, the feature is not avaiable in current Intel Fortran Compiler. You may add/claim library path; add/claim header pathmanually.

For use LAPACK95,BLAS95 interface,the newMKL version 10.2(you can upgrade the latestintel compiler to see it also ) contains the precompiled interface libraries and the corresponding precompiled interface modules for BLAS95 and LAPACK95 precompiled interface modules for BLAS95 and LAPACK95 in install package.
See <http://software.intel.com/en-us/articles/blas-and-lapack-fortran95-mod-files/>
So we don't trouble to build them byourselves.

Please note: as the interface libraries are not MKL standard library, so the "one button" integration don't support it. You may add themmanually if you are using the interface,
in details,
1. > Properties > Configuration Properties > C++ > General >Additional Include Directories property is appended with include
add C:Program FilesIntelMKL10.2.0.014includeia32,
Pleasekeep existing path, i.e: C:Program FilesIntelMKL10.2.0.014include

2. The > Properties > Configuration Properties > Linker >Input> Additional Dependencies
add mkl_lapack95.lib|mkl_blas95.lib
Please keep existing library, i.e mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib mkl_solver.lib libiomp5md.lib

Best Regards,
Ying
0 Kudos
Reply