O método numpy.show_config()
(ou numpy.__config__.show()
) gera informações sobre a ligação coletada no momento da construção. Minha saída é assim. Acho que significa que estou usando o BLAS / LAPACK que acompanha o 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__
deve realmente ser uma API pública. No entanto, você vence esta rodada, davost .lapack_opt_info
é mostrado significa que numpy está vinculado com lapack?numpy.show_config()
, provavelmente uma função pública da API, devido à ausência de sublinhados iniciais. Mas ele não está documentado on-line e não possui docstring, portanto, não é surpresa que seja tão difícil de encontrar. Espero que eles consertem isso.O que você está procurando é o seguinte: informações do sistema
Eu compilei numpy / scipy com atlas e posso verificar isso com:
Verifique a documentação para mais comandos.
fonte
sysinfo.get_info('atlas')
não retornou nada para mim, massysinfo.get_info('blas')
retornou{'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']}
esysinfo.get_info('lapack')
retornou{'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
O que isso significa?Como ele usa as versões carregadas dinamicamente, você pode fazer isso:
onde
anyoftheCmodules.so
poderia estar, por exemplo, onumpy/core/_dotblas.so
link paralibblas.so
.fonte
numpy/core/_dotblas.so
? (veja o comentário abaixo resposta das garras).so
arquivos lá. Basta pesquisar dentro do diretório NumPy (digamos, usandofind /path/to/numpy -name "*.so"
). Um par daqueles (_dotblas.so
,lapack_lite.so
sob um pré-compilado do Ubuntu, por exemplo) fazer uso de BLAS / LAPACK_dotblas.so
já não existe no v1.10 numpy e mais recente , mas você pode verificar a ligação demultiarray.so
veznumpy.__config__
objeto canônico em tempo de execução. (Veja a excelente resposta de davost .)Você pode usar a ferramenta de dependência do carregador de links para examinar os componentes de gancho no nível C de sua compilação e verificar se eles têm dependências externas nos blas e lapack de sua escolha. Eu não estou perto de uma caixa linux no momento, mas em uma máquina OS X você pode fazer isso dentro do diretório site-packages que contém as instalações:
substitua
ldd
no lugar deotool
um sistema gnu / Linux e você deverá obter as respostas necessárias.fonte
numpy/core/_dotblas.so
? (ver comentário abaixo resposta Ricardos)_dotblas.so
que é o wrapper de interface para qualquer blas que tenha sido usado para construir a distribuição. No Windows, ele será chamado_dotblas.pyd
, mas a função é a mesma._dotblas.so
só é construído se você estiver usando uma[atlas]
seçãosite.cfg
(e uma biblioteca BLAS habilitada para CBLAS). Portanto, você deve usá-lo, mesmo se não estiver usando o ATLAS (exceto quando estiver usando o Intel MKL, que possui uma seção dedicada)._dotblas.so
já não existe no v1.10 numpy e mais recente , mas você pode verificar a ligação demultiarray.so
vezVocê pode exibir a ligação BLAS, LAPACK, MKL usando
show_config()
:O que para mim dá saída:
fonte
('HAVE_CBLAS', None)]
?HAVE_CBLAS
está sendo definido, mas não tem valor (pense em C#define HAVE_CBLAS
:). Ele não precisa de um valor, pois é usado apenas como sinalizador. Eu interpretaria isso comoHAVE_CBLAS=True
. Se você não tivesse o CBLAS, não teria a tupla lá.Se você instalou o anaconda-navigator (em www.anaconda.com/anaconda/install/ para linux, Windows ou macOS) - blas, scipy e numpy serão instalados e você poderá vê-los clicando na guia ambientes no lado esquerdo da página inicial do navegador página (procure cada diretório em ordem alfa). A instalação do anaconda completo (em oposição ao miniconda ou aos pacotes individuais) cuidará da instalação de muitos dos pacotes essenciais necessários para a ciência de dados.
fonte