Как проверить связь blas/lapack в numpy/scipy?
Я строю свою среду numpy/scipy на основе blas и lapack более или менее на основе этой прогулка по.
когда я закончу, как я могу проверить, что мои функции numpy/scipy действительно используют ранее построенные функции blas/lapack?
5 ответов:
то, что вы ищете это: сведения о системе
я скомпилировал numpy/scipy с atlas, и я могу проверить это с помощью:
import numpy.distutils.system_info as sysinfo sysinfo.get_info('atlas')
проверьте документацию для получения дополнительных команд.
метод
numpy.__config__.show()
выводит информацию о связывании, собранную во время сборки. Мой вывод выглядит так. Я думаю, что это означает, что я использую BLAS/LAPACK, который поставляется с Mac OS.>>>import numpy as np >>>np.__config__.show() 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)]
как он использует динамически загруженной версии, вы можете просто сделать это:
$ ldd anyoftheCmodules.so
здесь
anyoftheCmodules.so
может быть, например,numpy/core/_dotblas.so
, кlibblas.so
.
вы можете использовать инструмент зависимости загрузчика ссылок, чтобы посмотреть на компоненты крюка уровня C вашей сборки и посмотреть, имеют ли они внешние зависимости от ваших blas и lapack выбора. Я не рядом с Linux box прямо сейчас, но на машине 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/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']