2015-01-06 156 views
0

目前,我正在嘗試在CentOS 7上使用英特爾編譯器爲英特爾MKL構建Numpy-1.9.1。我已安裝英特爾Parallel XE Studio 2015 C++和Fortran for Linux,並且我的終端我可以同時使用'icc'和'ifort'命令,它們都沒有問題。我也運行:與英特爾編譯器和MKL構建Numpy - CentOS 7

$ source /opt/intel/composer_xe_2015/bin/compilervars.sh intel64

按照本指南從英特爾的網頁做正是我想要做的事:https://software.intel.com/en-us/articles/numpyscipy-with-intel-mkl,我已經試圖建立numpy的使用這個命令:

$ sudo python setup.py config --compiler=intelem build_clib --compiler=intelem build_ext --compiler=intelem install

生成的消息是:

Running from numpy source directory. 
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'test_suite' 
    warnings.warn(msg) 
non-existing path in 'numpy/f2py': 'docs' 
non-existing path in 'numpy/f2py': 'f2py.1' 
F2PY Version 2 
blas_opt_info: 
blas_mkl_info: 
    FOUND: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['/opt/intel/composer_xe_2015/mkl/lib/intel64'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/opt/intel/composer_xe_2015/mkl/include'] 

    FOUND: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['/opt/intel/composer_xe_2015/mkl/lib/intel64'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/opt/intel/composer_xe_2015/mkl/include'] 

non-existing path in 'numpy/lib': 'benchmarks' 
lapack_opt_info: 
openblas_lapack_info: 
    libraries openblas not found in ['/usr/local/lib64', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/'] 
    NOT AVAILABLE 

lapack_mkl_info: 
mkl_info: 
    FOUND: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['/opt/intel/composer_xe_2015/mkl/lib/intel64'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/opt/intel/composer_xe_2015/mkl/include'] 

    FOUND: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['/opt/intel/composer_xe_2015/mkl/lib/intel64'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/opt/intel/composer_xe_2015/mkl/include'] 

    FOUND: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['/opt/intel/composer_xe_2015/mkl/lib/intel64'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/opt/intel/composer_xe_2015/mkl/include'] 

/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'define_macros' 
    warnings.warn(msg) 
running config 
running build_clib 
running build_src 
build_src 
building py_modules sources 
building library "npymath" sources 
Could not locate executable icc 
Could not locate executable ecc 
customize Gnu95FCompiler 
Found executable /usr/bin/gfortran 
customize Gnu95FCompiler 
customize Gnu95FCompiler using config 
C compiler: icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost 

compile options: '-Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -Inumpy/core/include -I/usr/include/python2.7 -c' 
icc: _configtest.c 
sh: icc: command not found 
sh: icc: command not found 
failure. 
removing: _configtest.c _configtest.o 
Traceback (most recent call last): 
    File "setup.py", line 251, in <module> 
    setup_package() 
    File "setup.py", line 243, in setup_package 
    setup(**metadata) 
    File "/home/myles/Downloads/numpy-1.9.1/numpy/distutils/core.py", line 169, in setup 
    return old_setup(**new_attr) 
    File "/usr/lib64/python2.7/distutils/core.py", line 152, in setup 
    dist.run_commands() 
    File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "/home/myles/Downloads/numpy-1.9.1/numpy/distutils/command/build_clib.py", line 63, in run 
    self.run_command('build_src') 
    File "/usr/lib64/python2.7/distutils/cmd.py", line 326, in run_command 
    self.distribution.run_command(command) 
    File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "/home/myles/Downloads/numpy-1.9.1/numpy/distutils/command/build_src.py", line 153, in run 
    self.build_sources() 
    File "/home/myles/Downloads/numpy-1.9.1/numpy/distutils/command/build_src.py", line 164, in build_sources 
    self.build_library_sources(*libname_info) 
    File "/home/myles/Downloads/numpy-1.9.1/numpy/distutils/command/build_src.py", line 299, in build_library_sources 
    sources = self.generate_sources(sources, (lib_name, build_info)) 
    File "/home/myles/Downloads/numpy-1.9.1/numpy/distutils/command/build_src.py", line 386, in generate_sources 
    source = func(extension, build_dir) 
    File "numpy/core/setup.py", line 686, in get_mathlib_info 
    raise RuntimeError("Broken toolchain: cannot link a simple C program") 
RuntimeError: Broken toolchain: cannot link a simple C program 

我使用的CentOS 7一這是我的操作系統。看起來由於某種原因,構建腳本找不到icc。

我需要使用英特爾編譯器進行numpy編譯,因爲從我收集的內容來看,我需要使用英特爾編譯器和英特爾MKL進行numpy編譯,才能自動卸載到至強皮膚。如果有人爲自動卸載到Xeon Phi而構建了numpy,或者在這個問題上使用英特爾編譯器創建numpy,我將很感激修復這個錯誤的輸入。

+1

嘗試運行build命令而不使用'sudo'(首先運行'sudo make clean'來清理)。 'sudo'命令可能使用'root'的'$ PATH'而不是您自己的。如果是這樣的話,'/ opt/intel/bin'(或'/ opt/intel/composer_xe_2015/bin')將不會被搜索,導致'icc'的'command not found'錯誤。 – MattDMo

+0

@MattDMo哇,另一件我從來不會懷疑是這個新的Linux。事實證明,這正是問題所在。英特爾指南承擔了root訪問權限,因此如果我已經設置了root權限,命令就可以正常工作。相反,我使用'sudo'運行build命令,然後使用'sudo'運行'python setup.py install',一切正常。我的Numpy現在可以完美地與我的Xeon phi配合使用。非常感謝! –

回答

0

在Unix/Linux系統中,sudo命令(小號 UPER ù SER DO)被設置爲使用爲root用戶定義的環境變量,而不是用戶運行該命令。如果您將程序安裝在非標準位置,則需要使用超級用戶權限運行,否則可能會導致問題。例如,在OS X系統上(運行在BSD Unix上),默認情況下,環境變量中不包含/usr/local/bin。您可以設置您的用戶帳戶以將此目錄包含在您的PATH中,但如果您嘗試將sudo與該程序一起使用,則不會找到它,除非您修改root的環境(或系統環境)以包含/usr/local/binPATH

這可能是您問題的原因。 iccifort位於(IIRC)/opt/intel/bin和/或/opt/intel/composer_xe_2015/bin(其中一個可能符號鏈接到另一個),並且您至少已將其中一個目錄添加到您的$PATH環境變量中,但在使用sudo執行構建命令,程序沒有被找到。爲了解決這個問題,不要使用sudo構建。首先,以清除任何剩餘的臨時文件,運行

sudo make clean 

然後運行

python setup.py config --compiler=intelem 

,確認一切設置正確。接下來,運行

python setup.py build_clib --compiler=intelem build_ext --compiler=intelem 

建立一切。如果沒有任何錯誤成功,則可以選擇運行

python setup.py test 

(我不認爲你需要的compiler論據這一目標)來驗證構建,然後運行

sudo python setup.py install 

安裝一切在您系統的site-packages目錄中。由於site-packagesroot所有,此處需要sudo

+0

謝謝@MattDMo,這個信息對我也很有用。 – Nacho