高性能Numpy/Scipy:使用Intel MKL和Intel Compilers
2016-12-17 11:48
363 查看
1.获取Intel Parallel Studio XE
Intel免费软件工具提供免费的软件包,其中包括完整的Intel编译器和计算库及其激活码,软件和激活码一一对应。注意需要使用教育邮箱注册,否则不予通过。2. 安装过程
解压后在终端进入./install_GUI.sh,按照提示进行就好,其中激活的步骤需要联网,且最多只能激活5次。最后整个库会安装在
\opt\intel路径下,重要的是配置环境变量。
首先加入Intel编译器icc的路径
export INTELCOMP=/opt/intel/bin export PATH=$INTELCOMP:$PATH
接着加入共享库的路径,其中库的名称一定要有对应的版本号,这里是
.1.132
export MKLHOME=/opt/intel/mkl/lib/intel64 export LIB1=/opt/intel/compilers_and_libraries_2017.1.132/linux/mkl/lib/intel64_lin export LIB2=/opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64_lin export LD_LIBRARY_PATH=$MKLHOME:$LIB1:$LIB2:$LD_LIBRARY_PATH
注意:如果使用中还有一些
.so库找不到,则可以定位这些库然后加入到
LD_LIBRARY_PATH中。如果需要有全局的作用,则可以编辑
/etc/ld.so.conf文件,增加这些路径,并用
ldconfig刷新。
3. 构建numpy和scipy
主要依据Numpy/Scipy with Intel® MKL and Intel® Compilers官网提示。总结起来就是在numpy的安装路径下增加site.cfg文件,内容如下:[mkl] library_dirs = /opt/intel/compilers_and_libraries_2017.1.132/linux/mkl/lib/intel64 include_dirs = /opt/intel/compilers_and_libraries_2017.1.132/linux/mkl/include mkl_libs = mkl_rt lapack_libs =
接着更改
numpy/distutils/intelccompiler.py文件中的
self.cc_exe语句,如果是64位,则在
IntelEM64TCCompiler类中将之改为
self.cc_exe = 'icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost'。然后就可以编译安装numpy了
$ python setup.py config --compiler=intelem build_clib --compiler=intelem build_ext --compiler=intelem install
构建安装scipy可以直接进行
$ python setup.py config --compiler=intelem --fcompiler=intelem build_clib --compiler=intelem --fcompiler=intelem build_ext --compiler=intelem --fcompiler=intelem install
4. 关于一些错误
构建中编译器和共享库路径找不到c编译器一定需要icc,所以一定要将icc定位后加入到系统变量
PATH中 ,共享库路径可以加入
LD_LIBRARY_PATH或者编辑
/etc/ld.so.conf文件。同时,还需要fortran编译器,而它集成在gcc中,因此在编译之前一定要确保已经安装了gcc。
还有错误就是找不到系统的编译器,例如
ld: cannot find -lstdc++的错误,这是说系统找不到
libstdc++.so文件,但是在
/usr/lib64中会有
libstdc++.so.6文件,因此要创建软链接才能正常编译
$ ln -s /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so
使用numpy/scipy时找不到共享库
共享库路径同样要加入
LD_LIBRARY_PATH或者编辑
/etc/ld.so.conf文件
安装其他基于numpy的库时,出现未定义的符号undefined symbols的错误
在当前环境中缺少共享库路径,可以暂时添加错误中缺少的路径到
LD_LIBRARY_PATH中,即
export LD_LIBRARY_PATH=[the needed path]:$LD_LIBRARY_PATH
这样重新安装就可以了。
相关文章推荐
- 高性能Numpy/Scipy加速:使用Intel MKL和Intel Compilers或OpenBLAS(待续)
- Numpy/Scipy with Intel® MKL
- Intel® MKL with Numpy, Scipy, Matlab, C#, Python, NAG and more
- 搭建使用numpy, scipy, scikit-learn的环境
- Caffe:CPU模式下使用Intel MKL做mnist训练
- 【笔记】【原】Ubuntu Linux 12.04 64位下Intel Math Kernel Library (MKL) 2013安装以及使用
- VS2012上使用intel mkl矩阵
- 使用Numpy和Scipy处理图像
- 2017 windows python 安装numpy+mkl+scipy+scikit-learn
- 在Fortran MEX中使用Intel MKL
- 【编程语言】Python 使用包管理工具pip安装模块numpy、scipy、matplotlib以及scikit-learn CentOS 7
- Python使用matplotlib,numpy,scipy进行散点的平滑曲线化方法
- Using Intel MKL with MATLAB - Matlab使用多核CPU
- Linux入门(10)——Ubuntu16.04使用pip3和pip安装numpy,scipy,matplotlib等第三方库
- numpy及scipy的使用
- 使用Numpy和Scipy处理图像
- [zlib]使用Intel PPL来提zlib高性能
- Ubuntu Linux 12.04 64位下Intel Math Kernel Library (MKL) 2013安装以及使用
- Python使用scipy和numpy操作处理图像
- 使用Numpy和Scipy处理图像