0

現在、CentOS 7 で Intel コンパイラを使用して Intel の MKL 用の Numpy-1.9.1 をビルドしようとしています。Intel Parallel XE Studio 2015 C++ と Linux 用の Fortran がインストールされており、端末では「icc」と「ifort」の両方を使用できます。コマンドを実行すると、どちらも問題なく検出されます。私も実行しました:

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

私がやろうとしていることを正確に行うためのIntelのWebページのこのガイドに従って: 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 を見つけられないようです。

私が収集したものから、Xeon Phi への自動オフロードを利用できるようにするには、Intel コンパイラーと Intel MKL で numpy ビルドが必要なので、Intel コンパイラーで numpy ビルドが必要です。誰かが Xeon Phi への自動オフロード用に numpy をビルドした場合、またはこの問題で Intel コンパイラで numpy をビルドした場合は、このエラーを修正するための情報をいただければ幸いです。

4

1 に答える 1

0

Unix/Linux システムでは、sudoコマンド ( S uper User DO )は、コマンドを実行しているユーザーではなく、ユーザーに対して定義された環境変数を使用するように設定されています。rootこれは、プログラムを標準以外の場所にインストールし、スーパーユーザー権限で実行する必要がある場合に問題を引き起こす可能性があります。たとえば、OS X システム (BSD Unix のフレーバーで実行される) では、/usr/local/binデフォルトでPATH環境変数に含まれていません。このディレクトリを に含めるようにユーザーのアカウントを設定することはできますが、そこにあるプログラムでPATH使用しようとすると、の環境 (またはシステムの環境) を に含めるようにsudo変更しない限り、ディレクトリは見つかりません。root/usr/local/binPATH

これが問題の原因である可能性があります。iccおよび/または(一方が他方にシンボリックリンクされている可能性がありますifort)の(IIRC)にあり、これらのディレクトリの少なくとも1つを環境変数に追加しましたが、ビルドコマンドの実行に使用すると、プログラムは実行されません見つかった。これを回避するには、を使用してビルドしないでください。まず、残っている一時ファイルをすべて消去するには、次を実行します。/opt/intel/bin/opt/intel/composer_xe_2015/bin$PATHsudosudo

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システムのディレクトリにすべてをインストールします。が所有してsudoいるため、ここでは が必要です。site-packagesroot

于 2015-01-07T02:21:53.077 に答える