2016-05-12 7 views
7

MacOS、Ubuntu、RedHatの環境でnumpyとscipyを使用しています。 通常、利用可能なパッケージマネージャー(たとえば、mac ports、apt、yum)を使用してnumpyをインストールします。NumpyがBLASライブラリを使用しているかどうか調べる

しかし、手動でNumpyをコンパイルしないと、どのようにBLASライブラリを使用することができますか? Macのポートを使用すると、ATLASは依存関係としてインストールされます。しかし、実際に使用されているかどうかはわかりません。私が単純なベンチマークを実行するとき、numpy.dot()関数には約が必要です。 Eigen C++ライブラリを使用して計算されたドット積よりも2倍の時間です。私は、これは妥当な結果であるかどうかわからないです。..

敬具、あなたはライブラリが設定されているかを確認するnumpy.show_config()をチェックしたい アポ

答えて

16

numpy.show_config()は必ずしも信頼できる情報を提供しません。例えば、私はUbuntuの14.04で、np.show_config()の出力は次のようになりますapt-get install python-numpy場合:numpyのは、標準CBLASライブラリを使用しているかのように

に見えます。しかし、numpyがlibopenblas-devパッケージを介してインストールしたOpenBLASを使用しているという事実を知っています。


* nixのを確認するための最も確実な方法は、私は、Macを所有していない(実行時に反対のライブラリnumpyのリンクを共有するかを調べるためにlddを使用することですが、私はあなたの代わりにotool -Lを使用することができると思いますldd)。 V1.10より古いnumpyののバージョンの

  • ~$ ldd /<path_to_site-packages>/numpy/core/_dotblas.so 
    

    _dotblas.soが存在しない場合、これはおそらく、それが最初にコンパイルされたときnumpyのは、任意のBLASライブラリを検出できなかったことを意味この場合、BLAS依存コンポーネントのいずれも構築されません。

  • numpy v1の場合。10以降:

    _dotblas.so has been removedていますが、代わりにmultiarray.soの依存関係を確認することができます。

    私はapt-get経由でインストールnumpyののバージョンを見てみると
    ~$ ldd /<path_to_site-packages>/numpy/core/multiarray.so 
    

~$ ldd /usr/lib/python2.7/dist-packages/numpy/core/_dotblas.so 
    linux-vdso.so.1 => (0x00007fff12db8000) 
    libblas.so.3 => /usr/lib/libblas.so.3 (0x00007fce7b028000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fce7ac60000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fce7a958000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fce7a738000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007fce7ca40000) 

/usr/lib/libblas.so.3 is actuaシンボリックリンクの連鎖の始まり。私はreadlink -eを使用して彼らの究極の目標にそれらに従うなら、私は彼らが私のOpenBLAS共有ライブラリを指していることを参照してください。私を助け

~$ readlink -e /usr/lib/libblas.so.3 
/usr/lib/openblas-base/libblas.so.3 
+0

どうもありがとう!実際には、標準のlibblasライブラリを使用しています... – Apoptose

2

numpy.show_config()は私のDebian Linuxでは情報が利用できないと伝えます。

しかし、/ usr/lib/python3/dist-packages/scipy/libには、blasのサブディレクトリがあります。サブディレクトリテストには、BLAS用のテストプログラムがいくつかあります。

これが役に立ちます。

関連する問題