NumPy와 SciPy에서 BLAS/LAPACK 연결을 확인하는 방법은 무엇입니까?
저는 이 워크스루를 기반으로 블랙과 랩백을 기반으로 한 마비/스파이웨어 환경을 구축하고 있습니다.
작업이 완료되면, 내 numpy/scipy 기능이 실제로 이전에 구축된 blas/lapack 기능을 사용하는지 어떻게 확인할 수 있습니까?
방법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)]
당신이 찾고 있는 것은 다음과 같습니다:
나는 지도책으로 numpy/scipy를 컴파일했고 이것을 확인할 수 있습니다:
import numpy.distutils.system_info as sysinfo
sysinfo.get_info('atlas')
자세한 명령은 설명서를 참조하십시오.
링크 로더 종속성 도구를 사용하여 빌드의 C 수준 후크 구성 요소를 살펴보고 선택한 블레이드와 랩에 외부 종속성이 있는지 확인할 수 있습니다.지금은 리눅스 박스 근처에 있지 않지만 OS X 컴퓨터에서 설치가 들어 있는 사이트 패키지 디렉토리 내에서 이 작업을 수행할 수 있습니다.
$ 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/Linux 시스템에서 필요한 답을 얻을 수 있습니다.
다음을 사용하여 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']
www.anaconda.com/anaconda/install/ 의 Linux, Windows 또는 MacOS용으로 aconda-director를 설치한 경우 blas, scipy 및 numpy가 모두 설치되며 탐색기 홈 페이지 왼쪽에 있는 환경 탭을 클릭하여 각 디렉토리를 알파 순서로 확인할 수 있습니다.완전한 아나콘다(미니콘다 또는 개별 패키지와 달리)를 설치하면 데이터 과학에 필요한 많은 필수 패키지를 설치할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9000164/how-to-check-blas-lapack-linkage-in-numpy-and-scipy
'programing' 카테고리의 다른 글
HTML 소스에 액세스하는 Python Selenium (0) | 2023.07.21 |
---|---|
get_dummies(판다스)와 OneHotEncoder(Scikit-learn)의 장단점은 무엇입니까? (0) | 2023.07.21 |
ImportError: pip을 설치한 후 바로 pip'이라는 모듈이 없는 이유는 무엇입니까? (0) | 2023.07.21 |
문자열 ISO-8601 날짜를 오라클의 타임스탬프 데이터 형식으로 변환 (0) | 2023.07.21 |
복사본을 포함한 Numpy 배열 할당 (0) | 2023.07.21 |