2

几天来,我一直在尝试在系统上numpy-1.7.1使用时安装。我不久前使用相同的编译器成功编译。MKL-10.3python-2.7.5gcc-4.7.2linux-2.6.18-308.24.1.el5R-3.0.1MKL

我将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库。到目前为止,没有任何投诉或警告。一旦我尝试用.BLASLAPACKnumpy

 $ 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

这似乎是一个已知问题(指向源的链接),因此libiomp5不由libmkl_rt. 当我将路径添加到libiomp5中的library_dirs变量时site.cfgnumpy无法检测到所有 MKL库。

我什至尝试了以下方法来强制gcc使用它自己的openMP库/头文件,但无济于事。

CFLAGS='-fopenmp -lgomp' python setup.py install

对于此事,我将不胜感激任何形式的帮助或建议。不要犹豫,让我知道我在这个线程中省略了关键信息。

编辑:我在一个x86_64平台上运行。

4

2 回答 2

3

添加libiomp5LD_MODULES_PATH环境的路径。我目前使用的服务器使用该modules库来管理服务器范围的应用程序和库。我以前只使用了独立 MKL/10.3模块,但将其替换为ifort_icc/13.0(其中还包含MKL)添加icc了与LD_MODULES_PATH. 使用与site.cfg上述相同的方法似乎可以工作并numpy运行测试套件。

我不知道这是否是最优雅的解决方案,但它现在可以解决问题。

于 2013-08-01T20:32:57.013 回答
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

于 2017-03-10T21:04:40.833 回答