답변:
메소드 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 함수 인을 사용할 수 있습니다 . 그러나 온라인으로 문서화되어 있지 않고 문서 문자열이 없으므로 찾기가 너무 어렵다는 것은 놀라운 일이 아닙니다. 잘만되면 그들은 그것을 고칠 것이다.
당신이 찾고있는 것은 이것입니다 : 시스템 정보
아틀라스로 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
어떻게합니까? (talonmies 응답 아래 설명을 참조)
.so
파일 이 있어야합니다 . NumPy 디렉토리 내부를 검색하십시오 (예 : 사용 find /path/to/numpy -name "*.so"
). (그 중 몇 가지 _dotblas.so
, lapack_lite.so
예를 들어 우분투 미리 컴파일 한 아래) BLAS / LAPACK의 메이크업 사용
_dotblas.so
더 이상 numpy v1.10 이상에 존재하지 않지만multiarray.so
대신 링크를 확인할 수 있습니다.
링크 로더 종속성 도구를 사용하여 빌드의 C 레벨 후크 구성 요소를보고 구성 요소가 선택한 Blas 및 Lapack에 대한 외부 종속성이 있는지 확인할 수 있습니다. 나는 지금 리눅스 박스 근처에 있지 않지만 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)
대체 ldd
대신에 otool
GNU / 리눅스 시스템에 당신은 당신이 필요로하는 답을 얻어야한다.
numpy/core/_dotblas.so
어떻게합니까? (Ricardos 답변 아래 주석 참조)
_dotblas.so
에는 배포를 빌드하는 데 사용 된 모든 blas에 대한 인터페이스 래퍼가 있습니다. Windows에서는이라고 _dotblas.pyd
하지만 함수는 동일합니다.
_dotblas.so
사용하는 경우에만 빌드 된 것처럼 보입니다 . 따라서 ATLAS를 사용하지 않더라도 Intel MKL을 사용하는 경우를 제외하고는 전용 섹션이 있습니다. [atlas]
site.cfg
_dotblas.so
더 이상 numpy v1.10 이상에 존재하지 않지만multiarray.so
대신 링크를 확인할 수 있습니다.
다음을 사용하여 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을 .