MKL在Visual Studio 2010中配置

来源:互联网 发布:java中的static关键字 编辑:程序博客网 时间:2024/06/06 09:11
多余的话不说了,直接配置工程环境。

工具->选项->Intel Composer XE->Visual Fortran->Compilers

Executables:

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\bin\ia32

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\bin\intel64

Includes:

     C:\Program Files (x86)\Intel\Compiler\11.1\038\mkl\include

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\include

Libraries:

    C:\Program Files (x86)\Intel\Compiler\11.1\038\mkl\ia32\lib

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\ia32

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\examples\lapack\lib

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\intel64

C:\Program Files (x86)\Intel\Compiler\11.1\038\mkl\em64t\lib

C:\Program Files (x86)\Intel\Compiler\11.1\038\lib\intel64

工程属性:

Fortran->General

 

Additional Include Directories:

   C:\Program Files (x86)\Intel\Compiler\11.1\038\mkl\ia32\lib

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\ia32

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\examples\lapack\lib

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\intel64

C:\Program Files (x86)\Intel\Compiler\11.1\038\mkl\em64t\lib

C:\Program Files (x86)\Intel\Compiler\11.1\038\lib\intel64

Suppress Startup Banner:

   选择  Yes(/nologo)

 

Fortran->Libraries

 

Use Intel Math Kernel Library:

   选择Sequential(/Qmkl:sequential)   Parellel(/Qmkl:parallel)

 

Linker->General

 

Additianal Library Directories:

   C:\Program Files (x86)\Intel\Compiler\11.1\038\mkl\ia32\lib

C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\ia32

 

Linker->Input

 

Additional Dependencies:

   mkl_intel_lp64.lib mkl_intel_thread.lib mkl_solver_lp64.lib mkl_core.lib libguide.liblapack_ia32_intel.lib

贴上代码实验一下:

PROGRAM MAIN

    IMPLICIT NONE

    DOUBLE PRECISION ALPHA, BETA

    INTEGER M, K, N, I, J

    PARAMETER (M=2000, K=200, N=1000)

    DOUBLE PRECISION A(M,K), B(K,N), C(M,N)

    PRINT *, "This example computes real matrix C=alpha*A*B+beta*C"

    PRINT *, "using Intel(R) MKL function dgemm, where A, B, and C"

    PRINT *, "are matrices and alpha and beta are double precision "

    PRINT *, "scalars"

    PRINT *, ""

    PRINT *, "Initializing data for matrix multiplication C=A*B for "

    PRINT 10, " matrix A(",M," x",K, ") and matrix B(", K," x", N, ")"


10  FORMAT(a,I5,a,I5,a,I5,a,I5,a)

    PRINT *, ""

    ALPHA = 1.0

    BETA = 0.0

    PRINT *, "Intializing matrix data"

    PRINT *, ""

    DO I = 1, M

    DO J = 1, K

    A(I,J) = (I-1) * K + J

    END DO

    END DO

    DO I = 1, K

    DO J = 1, N

    B(I,J) = -((I-1) * N + J)

    END DO

    END DO

    DO I = 1, M

    DO J = 1, N

    C(I,J) = 0.0

    END DO

    END DO

    PRINT *, "Computing matrix product using Intel(R) MKL DGEMM "

    PRINT *, "subroutine"

    CALL DGEMM('N','N',M,N,K,ALPHA,A,M,B,K,BETA,C,M)

    PRINT *, "Computations completed."

    PRINT *, ""

    PRINT *, "Top left corner of matrix A:"

    PRINT 20, ((A(I,J), J = 1,MIN(K,6)), I = 1,MIN(M,6))

    PRINT *, ""

    PRINT *, "Top left corner of matrix B:"

    PRINT 20, ((B(I,J),J = 1,MIN(N,6)), I = 1,MIN(K,6))

    PRINT *, ""

    20 FORMAT(6(F12.0,1x))

    PRINT *, "Top left corner of matrix C:"

    PRINT 30, ((C(I,J), J = 1,MIN(N,6)), I = 1,MIN(M,6))

    PRINT *, ""

    30 FORMAT(6(ES12.4,1x))

    PRINT *, "Example completed."

    STOP

END

可以运行了。

注:在路径中,ia32和intel64是需要根据系统选择的,为了避免麻烦,直接把所有的路径都包括。其中蓝色的路径在此测试程序中并不需要。我在编译另外的程序时,需要lapack_ia32_intel.lib,因此在mkl文件夹中查找到这个文件,然后添加路径到Libraries,添加文件名到input中。后面程序如果还有lib找不到,就按照这种方法解决。

0 0