在Fortran MEX中使用Intel MKL
2012-04-08 22:12
302 查看
要想成功编译使用Intel MKL的FortranMEX文件,需要修改mexopts.bat中的几个地方。以IVF11为例,需要修改的地方如下:
setINCLUDE=%IFORT_COMPILER11%\Include;%IFORT_COMPILER11%\Include\IA32;%IFORT_COMPILER11%\mkl\Include;%IFORT_COMPILER11%\mkl\Include\IA32;%LINKERDIR%\VC\ATLMFC\INCLUDE;%LINKERDIR%\VC\INCLUDE;%WINSDKDIR%\include;%LINKERDIR%\SDK\v3.5\include;%INCLUDE%
setLIB=%IFORT_COMPILER11%\Lib\IA32;%IFORT_COMPILER11%\mkl\ia32\lib;%LINKERDIR%\VC\ATLMFC\LIB;%LINKERDIR%\VC\LIB;%WINSDKDIR%\Lib;%LINKERDIR%\SDK\v3.5\lib;%MATLAB%\extern\lib\win32;%LIB%
set COMPFLAGS=/fpp /Qprec"/I%MATLAB%/extern/include" -c -nologo -DMATLAB_MEX_FILE /MD/fp:source /assume:bscc /QxHost
/Qmkl
上面红色部分是需要添加的。
如果Link过程中出现“无法解析的外部符号 _xxxxxx,该符号在函数 _xxxxx中被引用”之类的错误,是因为Linker没有找到合适的.lib文件,可如下处理:
set LINKFLAGS=/DLL /EXPORT:MEXFUNCTION/LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib/implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map"/NOLOGO /INCREMENTAL:NO
rem Linkable MKL libs:mkl_blacs_dll.libmkl_blacs_intelmpi.lib mkl_blacs_mpich2.lib mkl_blas95.libmkl_cdft_core.lib
mkl_cdft_core_dll.lib mkl_core.libmkl_core_dll.lib mkl_intel_c.lib mkl_intel_c_dll.libmkl_intel_s.lib mkl_intel_s_dll.lib mkl_intel_thread.libmkl_intel_thread_dll.lib mkl_lapack95.lib mkl_pgi_thread.libmkl_pgi_thread_dll.lib mkl_scalapack_core.libmkl_scalapack_core_dll.lib
mkl_sequential.libmkl_sequential_dll.lib mkl_solver.libmkl_solver_sequential.lib
set LINKFLAGS =%LINKFLAGS% /LIBPATH:"%IFORT_COMPILER11%\mkl\ia32\lib"mkl_lapack95.libmkl_intel_c.lib
将上面黄颜色部分所示的某个.lib 文件添加到LINKFLAGS后面即可,如绿色部分所示。如果实在不知道该加哪个.lib,就全部加上。
出自:http://blog.sina.com.cn/s/blog_6e98932f0100mjqo.html
setINCLUDE=%IFORT_COMPILER11%\Include;%IFORT_COMPILER11%\Include\IA32;%IFORT_COMPILER11%\mkl\Include;%IFORT_COMPILER11%\mkl\Include\IA32;%LINKERDIR%\VC\ATLMFC\INCLUDE;%LINKERDIR%\VC\INCLUDE;%WINSDKDIR%\include;%LINKERDIR%\SDK\v3.5\include;%INCLUDE%
setLIB=%IFORT_COMPILER11%\Lib\IA32;%IFORT_COMPILER11%\mkl\ia32\lib;%LINKERDIR%\VC\ATLMFC\LIB;%LINKERDIR%\VC\LIB;%WINSDKDIR%\Lib;%LINKERDIR%\SDK\v3.5\lib;%MATLAB%\extern\lib\win32;%LIB%
set COMPFLAGS=/fpp /Qprec"/I%MATLAB%/extern/include" -c -nologo -DMATLAB_MEX_FILE /MD/fp:source /assume:bscc /QxHost
/Qmkl
上面红色部分是需要添加的。
如果Link过程中出现“无法解析的外部符号 _xxxxxx,该符号在函数 _xxxxx中被引用”之类的错误,是因为Linker没有找到合适的.lib文件,可如下处理:
set LINKFLAGS=/DLL /EXPORT:MEXFUNCTION/LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib/implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map"/NOLOGO /INCREMENTAL:NO
rem Linkable MKL libs:mkl_blacs_dll.libmkl_blacs_intelmpi.lib mkl_blacs_mpich2.lib mkl_blas95.libmkl_cdft_core.lib
mkl_cdft_core_dll.lib mkl_core.libmkl_core_dll.lib mkl_intel_c.lib mkl_intel_c_dll.libmkl_intel_s.lib mkl_intel_s_dll.lib mkl_intel_thread.libmkl_intel_thread_dll.lib mkl_lapack95.lib mkl_pgi_thread.libmkl_pgi_thread_dll.lib mkl_scalapack_core.libmkl_scalapack_core_dll.lib
mkl_sequential.libmkl_sequential_dll.lib mkl_solver.libmkl_solver_sequential.lib
set LINKFLAGS =%LINKFLAGS% /LIBPATH:"%IFORT_COMPILER11%\mkl\ia32\lib"mkl_lapack95.libmkl_intel_c.lib
将上面黄颜色部分所示的某个.lib 文件添加到LINKFLAGS后面即可,如绿色部分所示。如果实在不知道该加哪个.lib,就全部加上。
出自:http://blog.sina.com.cn/s/blog_6e98932f0100mjqo.html
相关文章推荐
- 高性能Numpy/Scipy加速:使用Intel MKL和Intel Compilers或OpenBLAS(待续)
- Caffe:CPU模式下使用Intel MKL做mnist训练
- Using Intel MKL with MATLAB - Matlab使用多核CPU
- VS2012上使用intel mkl矩阵
- 【笔记】【原】Ubuntu Linux 12.04 64位下Intel Math Kernel Library (MKL) 2013安装以及使用
- Linux 版的 Intel MKL 的安装使用
- 高性能Numpy/Scipy:使用Intel MKL和Intel Compilers
- Linux 环境下Fortran程序连接使用Intel MKLPardiso解对称稀疏矩阵
- Ubuntu Linux 12.04 64位下Intel Math Kernel Library (MKL) 2013安装以及使用
- Intel MKL & ATLAS 测试
- Intel MKL基础(1)了解MKL、MKL资源
- 使用最新 ALSA 驱动解决 Ubuntu Linux Intel 集成声卡问题
- 记intel杯比赛中各种bug与debug【其二】:intel caffe的使用和大坑
- 【神经网络与深度学习】【C/C++】比较OpenBLAS,Intel MKL和Eigen的矩阵相乘性能
- 关于Intel(R) IPP函数库在BCB中的使用设置说明
- 使用Intel的虚拟化技术(vt-x)加速Android模拟器
- x64环境下,Vs2013+Armadillo+intel MKL的安装和配置方法
- PCBSD: Intel显卡上使用宽屏分辨率
- 使用intel atom技术加速安卓模拟器
- 使用Intel编译器(4)IPO(1)IPO了解和使用