回答:
メソッドnumpy.show_config()
(またはnumpy.__config__.show()
)は、ビルド時に収集されたリンケージに関する情報を出力します。出力は次のようになります。Mac OSに同梱されているBLAS / LAPACKを使用しているということです。
>>> import numpy as np
>>> np.show_config()
lapack_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3']
define_macros = [('NO_ATLAS_INFO', 3)]
blas_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
define_macros = [('NO_ATLAS_INFO', 3)]
lapack_opt_info
示されている単なる事実は、numpyがlapackにリンクされていることを意味しますか?
numpy.show_config()
。これは、開始アンダースコアがないため、おそらくパブリックAPI関数です。しかし、オンラインで文書化されておらず、docstringもないため、見つけるのが難しいのは当然のことです。うまくいけば、彼らはそれを修正します。
あなたが探しているのはこれです: システム情報
私はアトラスでnumpy / scipyをコンパイルしました、そして私はこれを次のようにチェックできます:
import numpy.distutils.system_info as sysinfo
sysinfo.get_info('atlas')
その他のコマンドについては、ドキュメントを確認してください。
sysinfo.get_info('atlas')
は何も返さなかったが、sysinfo.get_info('blas')
戻っ{'include_dirs': ['/usr/local/include', '/usr/include', '/opt/local/include', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/include'], 'libraries': ['blas', 'blas'], 'library_dirs': ['/usr/lib']}
てsysinfo.get_info('lapack')
きて戻っ てきた {'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
どういう意味ですか?
動的にロードされたバージョンを使用するので、これを行うことができます:
$ ldd anyoftheCmodules.so
どこanyoftheCmodules.so
可能性があり、例えば、numpy/core/_dotblas.so
へ、どのリンクlibblas.so
。
numpy/core/_dotblas.so
か?(タロニーの回答の下のコメントを参照)
.so
ファイルがなければなりません。NumPyディレクトリ内を検索するだけです(たとえば、を使用find /path/to/numpy -name "*.so"
)。(これらのカップルの_dotblas.so
、lapack_lite.so
例えばUbuntuのプリコンパイルされた1下)BLAS / LAPACKのメイク使用
リンクローダー依存関係ツールを使用して、ビルドのCレベルのフックコンポーネントを調べ、選択したblasおよびlapackに外部依存関係があるかどうかを確認できます。私は現在、Linuxボックスの近くではありませんが、OS Xマシンでは、インストールを保持するsite-packagesディレクトリ内でこれを行うことができます。
$ otool -L numpy/core/_dotblas.so
numpy/core/_dotblas.so:
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 268.0.1)
$ otool -L scipy/linalg/flapack.so
scipy/linalg/flapack.so (architecture i386):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)
scipy/linalg/flapack.so (architecture ppc):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
$ otool -L scipy/linalg/fblas.so
scipy/linalg/fblas.so (architecture i386):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)
scipy/linalg/fblas.so (architecture ppc):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
gnu / Linuxシステムの代わりに置き換えるとldd
、otool
必要な答えが得られるはずです。
numpy/core/_dotblas.so
か?(リカルドスの回答の下のコメントを参照)
_dotblas.so
では、ディストリビューションの構築に使用されたあらゆるブラスへのインターフェースラッパーであるa が存在します。Windowsではと呼ばれます_dotblas.pyd
が、機能は同じです。
_dotblas.so
を使用している場合にのみビルドされるようです。したがって、ATLASを使用していない場合でも(Intel MKLを使用している場合を除き、専用セクションがあるので)使用する必要があります。[atlas]
site.cfg
次を使用して、BLAS、LAPACK、MKLリンケージを表示できますshow_config()
。
import numpy as np
np.show_config()
私にとってはこれが出力を与えます:
mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/my/environment/path/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/my/environment/path/include']
('HAVE_CBLAS', None)]
ますか?
numpy.__config__
実際にはパブリックAPIである必要があります。それにもかかわらず、あなたはこのラウンドに勝ちます、davost。