我一直试图在numpy-1.7.1
系统上使用MKL-10.3
python-2.7.5
gcc-4.7.2
linux-2.6.18-308.24.1.el5
安装R-3.0.1
几天。我不久前用MKL
使用相同的编译器成功编译了site.cfg
。
我修改了numpy-1.7.1
中的[mkl]
library_dirs = /sb/software/libraries/MKL/10.3/lib/intel64
include_dirs = /sb/software/libraries/MKL/10.3/include
mkl_libs = mkl_rt
lapack_libs =
文件,如下所示:
python setup.py install
当我致电MKL
时,它会找到BLAS
和LAPACK
的{{1}}个库。到目前为止,没有任何抱怨或警告。一旦我尝试使用numpy
执行某些操作,它就会崩溃。
$ python
Python 2.7.5 (default, Jul 31 2013, 16:54:43)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.test('full')
Running unit tests for numpy
NumPy version 1.7.1
NumPy is installed in /sb/project/mjd-574/ndejay/modules/python-2.7.5/lib/python2.7/site-packages/numpy
Python version 2.7.5 (default, Jul 31 2013, 16:54:43) [GCC 4.7.2]
nose version 1.3.0
.................python: symbol lookup error: /sb/software/libraries/MKL/10.3/lib/intel64/libmkl_intel_thread.so: undefined symbol: omp_get_num_procs
这似乎是一个已知问题(link to source),libiomp5
未加载libmkl_rt
。当我将libiomp5
的路径添加到library_dirs
中的site.cfg
变量时,numpy
无法检测所有 MKL
个库。< / p>
我甚至尝试过以下操作来强制gcc
使用自己的openMP
库/标题,但无济于事。
CFLAGS='-fopenmp -lgomp' python setup.py install
对于此事的任何形式的帮助或建议,我将不胜感激。不要犹豫,让我知道我在这个帖子中省略了关键信息。
编辑:我正在x86_64
平台上运行。
答案 0 :(得分:3)
将libiomp5
的路径添加到LD_MODULES_PATH
环境。我当前使用的服务器使用modules
库来管理服务器范围的应用程序和库。我之前只使用了独立 MKL/10.3
模块,但用ifort_icc/13.0
(也包含MKL
)替换了icc
相关的路径。 LD_MODULES_PATH
。使用与上述相同的site.cfg
似乎可行并且numpy
运行测试套件。
我不知道这是否是最优雅的解决方案,但它现在可以解决这个问题。
答案 1 :(得分:0)
您需要添加libomp5的路径:composer_xe_install_path / compiler / lib / intel64 到您的LD_LIBRARY_PATH。对我来说,路径如下:/opt/apps/intel/16.1/compilers_and_libraries_2016.1.150/linux/compiler/lib/intel64