El método numpy.show_config()
(o numpy.__config__.show()
) genera información sobre la vinculación recopilada en el momento de la compilación. Mi salida se ve así. Creo que significa que estoy usando BLAS / LAPACK que viene con Mac OS.
>>> 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.__config__
realmente debería ser una API pública. No obstante, ganas esta ronda, davost .lapack_opt_info
se muestra significa que numpy está vinculado con lapack?numpy.show_config()
, que probablemente sea una función API pública en virtud de la ausencia de guiones bajos iniciales. Pero no está documentado en línea y no tiene una cadena de documentación, por lo que no es sorprendente que sea tan difícil de encontrar. Esperemos que arreglen eso.Lo que está buscando es esto: información del sistema
Compilé numpy / scipy con atlas y puedo verificar esto con:
Consulte la documentación para más comandos.
fuente
sysinfo.get_info('atlas')
no me devolvió nada, perosysinfo.get_info('blas')
regresó{'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']}
ysysinfo.get_info('lapack')
regresó{'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
¿Qué significa?Como utiliza las versiones cargadas dinámicamente, puede hacer esto:
dónde
anyoftheCmodules.so
podría estar, por ejemplonumpy/core/_dotblas.so
, a qué enlaceslibblas.so
.fuente
numpy/core/_dotblas.so
? (ver comentario debajo de la respuesta de talonmies).so
archivos allí. Simplemente busque dentro del directorio NumPy (digamos, usandofind /path/to/numpy -name "*.so"
). Un par de ellos (_dotblas.so
,lapack_lite.so
bajo un precompilado de Ubuntu, por ejemplo) hacen uso de BLAS / LAPACK_dotblas.so
ya no existe en v1.10 numpy y más reciente , pero se puede comprobar la vinculación demultiarray.so
lugarnumpy.__config__
objeto canónico en tiempo de ejecución. (Ver la excelente respuesta de davost .)Puede usar la herramienta de dependencia del cargador de enlaces para ver los componentes de enlace de nivel C de su compilación y ver si tienen dependencias externas en su blas y paquete de opciones. No estoy cerca de una caja de Linux en este momento, pero en una máquina con OS X puede hacer esto dentro del directorio de paquetes del sitio que contiene las instalaciones:
sustituya
ldd
en lugar deotool
en un sistema gnu / Linux y debería obtener las respuestas que necesita.fuente
numpy/core/_dotblas.so
? (ver comentario debajo de la respuesta de Ricardos)_dotblas.so
envoltura de interfaz para cualquier blas que se haya utilizado para construir la distribución. En Windows se llamará_dotblas.pyd
, pero la función es la misma._dotblas.so
solo se crea si está utilizando una[atlas]
sección ensite.cfg
(y una biblioteca BLAS habilitada para CBLAS). Por lo tanto, debe usar eso, incluso si no está usando ATLAS (excepto cuando está usando Intel MKL, que tiene una sección dedicada)._dotblas.so
ya no existe en v1.10 numpy y más reciente , pero se puede comprobar la vinculación demultiarray.so
lugarPuede mostrar enlaces BLAS, LAPACK, MKL usando
show_config()
:Lo que para mí da salida:
fuente
('HAVE_CBLAS', None)]
?HAVE_CBLAS
se está definiendo pero no tiene valor (piense en C:)#define HAVE_CBLAS
. No necesita un valor ya que solo se usa como bandera. Lo interpretaría comoHAVE_CBLAS=True
. Si no tuviera CBLAS, no tendría la tupla allí en absoluto.Si instaló anaconda-navigator (en www.anaconda.com/anaconda/install/ para linux, Windows o macOS), se instalarán blas, scipy y numpy y podrá verlos haciendo clic en la pestaña de entornos en el lado izquierdo de la página de inicio del navegador página (busque cada directorio en orden alfabético). La instalación de anaconda completa (a diferencia de miniconda o paquetes individuales) se encargará de instalar muchos de los paquetes esenciales necesarios para la ciencia de datos.
fuente