Numpyとscipyを異なる環境(MacOS、Ubuntu、RedHat)で使用しています。通常、利用可能なパッケージマネージャー(たとえば、macポート、apt、yum)を使用してnumpyをインストールします。
ただし、Numpyを手動でコンパイルしない場合、Bumpライブラリを使用していることをどのように確認できますか? Macポートを使用して、ATLASは依存関係としてインストールされます。ただし、実際に使用されているかどうかはわかりません。簡単なベンチマークを実行すると、numpy.dot()
関数は約1を必要とします。 Eigen C++ライブラリを使用して計算されるドット積の2倍の時間。これが合理的な結果であるかどうかはわかりません。
よろしく、アポ
numpy.show_config()
は常に信頼できる情報を提供するとは限りません。たとえば、Ubuntu 14.04で_apt-get install python-numpy
_の場合、np.show_config()
の出力は次のようになります。
_blas_info:
libraries = ['blas']
library_dirs = ['/usr/lib']
language = f77
lapack_info:
libraries = ['lapack']
library_dirs = ['/usr/lib']
language = f77
atlas_threads_info:
NOT AVAILABLE
blas_opt_info:
libraries = ['blas']
library_dirs = ['/usr/lib']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
atlas_blas_threads_info:
NOT AVAILABLE
openblas_info:
NOT AVAILABLE
lapack_opt_info:
libraries = ['lapack', 'blas']
library_dirs = ['/usr/lib']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
...
_
Numpyは標準のCBLASライブラリを使用しているように見えます。しかし、numpyが_libopenblas-dev
_パッケージを介してインストールしたOpenBLASを使用しているという事実は知っています。
* nixをチェックする最も確実な方法は、 ldd
を使用して、実行時にどの共有ライブラリがnumpyリンクに対してリンクするかを調べることです(Macを所有していませんが、 ldd
)の代わりに_otool -L
_を使用します。
v1.10より古いnumpyのバージョンの場合:
_~$ ldd /<path_to_site-packages>/numpy/core/_dotblas.so
_
__dotblas.so
_が存在しない場合、これはおそらく、numpyが最初にコンパイルされたときにBLASライブラリを検出できなかったことを意味します。この場合、BLAS依存コンポーネントはまったく構築されません。
numpy v1.10以降の場合:
__dotblas.so
_は削除されました 、ただし、代わりに_multiarray.so
_の依存関係を確認できます:
_~$ ldd /<path_to_site-packages>/numpy/core/multiarray.so
_
_apt-get
_でインストールしたnumpyのバージョンを見ると:
_~$ 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
_は、実際にはシンボリックリンクのチェーンの始まりです。 _readlink -e
_を使用してそれらを最終的なターゲットまでたどると、OpenBLAS共有ライブラリを指していることがわかります。
_~$ readlink -e /usr/lib/libblas.so.3
/usr/lib/openblas-base/libblas.so.3
_
numpy.show_config()は、情報が私のDebian Linuxで利用できないことを伝えるだけです。
ただし、/ usr/lib/python3/dist-packages/scipy/libには、blasのサブディレクトリがあり、必要な情報が表示される場合があります。サブディレクトリテストには、BLASのテストプログラムがいくつかあります。
お役に立てれば。
numpy.show_config()
をチェックして、構成されているライブラリを確認する必要があります。