在linux上使用gcc-4.7.2在MKL-10.3上安装numpy-1.7.1

时间:2013-08-01 01:51:52

标签: python numpy openmp intel-mkl

我一直试图在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时,它会找到BLASLAPACK的{​​{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平台上运行。

2 个答案:

答案 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