前言
Intel MKL库在 Visual Studio 2010 + Intel Visual Fortran 2013 开发环境中的配置。
一、MKL库的配置
- 新建一个项目。
- 选择菜单栏中的工具->选项->Intel Composer XE->Visual Fortran->Compliers。
Executables添加:
C:\Program Files (x86)\Intel\Composer XE\mkl\bin\ia32
C:\Program Files (x86)\Intel\Composer XE\mkl\bin\intel64
Includes添加:
C:\Program Files (x86)\Intel\Composer XE\mkl\include
Libraries添加:
C:\Program Files (x86)\Intel\Composer XE\mkl\lib\ia32
C:\Program Files (x86)\Intel\Composer XE\mkl\lib\intel64
-
选择菜单栏中的项目->属性->Fortran->Libraries->Use Intel Math Kernel Library->Parallel (/Qmkl:parallel)。
-
选择菜单栏中的项目->属性->Linker->input->Additional Dependencies。
对于Win32项目,添加:
mkl_lapack95.lib mkl_intel_thread.lib mkl_core.lib
对于X64项目,添加:
mkl_blas95_ilp64.lib mkl_blas95_lp64.lib mkl_lapack95_lp64.lib mkl_lapack95_ilp64.lib mkl_core.lib
二、测试
测试代码如下:
!* (Solve linear system A X = B, where: *
!* *
!* 1 0 0 0 0 1 1 *
!* 1 1 0 0 0 -1 0 *
!* A = -1 1 1 0 0 1 B = 1 *
!* 1 -1 1 1 0 -1 0 *
!* -1 1 -1 1 1 1 1 *
!* 1 -1 1 -1 1 -1 0 ) *
!* *
Program main
Use lapack95
Implicit real*8(a-h, o-z)
Parameter (n=6)
Real *8 a(n, n), b(n), x(n), w(n, n), z(n)
Data a/1.D0, 1.D0, -1.D0, 1.D0, -1.D0, 1.D0, &
0.D0, 1.D0, 1.D0, -1.D0, 1.D0, -1.D0, &
0.D0, 0.D0, 1.D0, 1.D0, -1.D0, 1.D0, &
0.D0, 0.D0, 0.D0, 1.D0, 1.D0, -1.D0, &
0.D0, 0.D0, 0.D0, 0.D0, 1.D0, 1.D0, &
1.D0, -1.D0, 1.D0, -1.D0, 1.D0, -1.D0/
Data b/1.D0, 0.D0, 1.D0, 0.D0, 1.D0, 0.D0/
Print *, ' '
Print *, ' LINEAR SYSTEM AX=B:'
Print *, ' '
Do i = 1, n
Write (*, 10)(a(i,j), j=1, n), ' ', b(i)
End Do
Call gels(a, b)
x = b(1:n)
Print *, ' '
Print *, ' SOLUTION:'
Do i = 1, n
Write (*, *) x(i)
End Do
Print *, ' '
10 Format (6F8.4, A3, F8.4)
End Program main
测试结果如下:
!* LINEAR SYSTEM AX = B: *
!* *
!* 1.0000 0.0000 0.0000 0.0000 0.0000 1.0000 1.0000 *
!* 1.0000 1.0000 0.0000 0.0000 0.0000 -1.0000 0.0000 *
!* -1.0000 1.0000 1.0000 0.0000 0.0000 1.0000 1.0000 *
!* 1.0000 -1.0000 1.0000 1.0000 0.0000 -1.0000 0.0000 *
!* -1.0000 1.0000 -1.0000 1.0000 1.0000 1.0000 1.0000 *
!* 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 0.0000 *
!* *
!* SOLUTION: *
!* 0.343750000000000 *
!* 0.312500000000000 *
!* 0.375000000000000 *
!* 0.250000000000000 *
!* 0.500000000000000 *
!* 0.656250000000000 *
!* *