Parece que a velocidade do cálculo muda dependendo do BLAS usado para Numpy [Python]
Em "numpy", uma biblioteca de cálculos numéricos chamada BLAS é responsável pelo processamento real.
O BLAS usado depende se você instala o numpy com "conda install" ou "pip install", e dependendo de qual BLAS você usa, a velocidade de processamento será afetada não apenas pelo numpy, mas também pelas bibliotecas que dependem dele.
Desta vez, vou apresentar o BLAS e a diferença de velocidade real e como verificar qual BLAS você está usando.
BLAS e seus tipos
O que é BLAS?
Em relação ao BLAS, a explicação no site a seguir foi muito fácil de entender, então vou citá-la.
BLAS é uma abreviatura de Basic Linear Algebra Subprograms.Para ser franco, é uma biblioteca de operações lineares básicas, ou simplesmente um conjunto de funções que fazem os cálculos básicos de matrizes e vetores.Por exemplo, multiplicação de matrizes, cálculo de norma vetorial e assim por diante.A ideia é parar de implementar esses cálculos (reinventar a roda) e usar a biblioteca para uma codificação eficiente e eficiente.
BLAS fácil de usar
Visto que BLAS também é usado atrás de numpy, diz-se que o tempo de cálculo será diferente dependendo de qual BLAS é chamado quando numpy é executado.
Tipo BLAS
Vários tipos de BLAS foram desenvolvidos.Vamos dar uma olhada em alguns dos típicos.
Abrir BLAS
Uma implementação de código aberto do BLAS.No numpy instalado com pip, o OpenBLAS é chamado internamente para realizar operações.
É compatível com vários processadores e afirma-se que pode fornecer a mesma velocidade que o Intel MKL para o CPU Sandy Bridge da Intel.É bem conhecido por sua função multithread e parece que o número de núcleos é bem proporcional ao aumento de velocidade.
Intel MKL (Intel Math Kernel Library)
BLAS desenvolvido pela Intel. Apenas CPUs Intel são suportadas e não podem ser usadas com CPUs feitas por outras empresas. Por ser otimizado para CPUs Intel como Xeon, Core i series e Atom, é mais rápido usar intel MKL como uma biblioteca aritmética em um computador que usa essas CPUs.Intel MKL é usado para numpy instalado por "conda install" com Anaconda ou Miniconda.
ATLAS (Software de Álgebra Linear Ajustado Automaticamente)
Um dos BLAS gratuitos.Como o nome sugere, o ajuste define os parâmetros ideais para o hardware a ser instalado e realiza cálculos em alta velocidade.
Diferença no tempo de cálculo devido à diferença no BLAS
O fato do BLAS usado na parte de trás do numpy afetar a velocidade de processamento significa que está relacionado à velocidade de execução da biblioteca que depende do numpy.Em outras palavras, também afeta scipy, pandas, scikit-learn e tensorflow.
Muitos técnicos estão comparando benchmarks para diferenças BLAS (diferenças entre conda install e pip install), mas pegue aquele publicado na Intel® Developer Zone como exemplo.
O cálculo da matriz por scipy mostra o tempo necessário para a multiplicação de matrizes complicadas conforme vai para a direita, e intel MKL pode processar mais rápido do que ATLAS.
O seguinte é do oficial da Anaconda. Comparamos o número de imagens treinadas por segundo em cada modelo de aprendizado profundo com tensorflow instalado por conda install ou pip install, e a diferença é de até 1 vezes.
Outras comparações incluem pandas e scikit learn (O desempenho da Intel x Anaconda x vanilla Python - meu benchmark pessoal). Como o conda tem sua própria instalação e gerenciamento de biblioteca, parece ser um resultado favorável em muitos casos.
Como verificar BLAS em Python
__config__.show()
Apenas corra.
importar numpy como np np .__ config __. show ()
>>
mkl_info: libraries = ['mkl_rt'] library_dirs = ['C: / Users /'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C: \\ Arquivos de programas ( 'C: \\ Arquivos de programas (' x86) \\ IntelSWTools \\ compilers_and_libraries_2019.0.117 \\ windows \\ mkl ',' C: \\ Arquivos de programas (x86) \\ IntelSWTools \\ compilers_and_libraries_2019.0.117 \\ windows \\ mkl \\ include ',' C: \\ Program Files (x86) \\ IntelSWTools \\ compilers_and_libraries_2019.0.117 \\ windows \\ mkl \\ lib ',' C: / Users / programming / Miniconda3 / envs / ML \\ Biblioteca \\ incluir ']
Se mkl_info for exibido, intel MKL será usado.
discussão
Lista de comentários
Ainda não há comentários