Funções scipy blas

Funções scipy blas

As bibliotecas Scipy e Numpy são comumente usadas para resolver equações de álgebra linear e sistemas de álgebra lineares em geral. Independentemente da linguagem de programação em que você esteja trabalhando, você sempre pode aproveitar as bibliotecas de código para resolver as equações de álgebra linear. Quando se trata da linguagem de programação Python, você tem várias bibliotecas incríveis que oferecem uma variedade de funções úteis para brincar com sistemas de álgebra linear. As funcionalidades de ambas as bibliotecas (Scipy e Numpy) se sobrepõem às funções de álgebra linear. A biblioteca scipy utiliza os recursos da biblioteca Numpy para gerenciar o sistema de álgebra linear em programas Python. Este artigo explorará as funções scipy blas para sistemas de álgebra linear.

O que são funções scipy blas?

BLAS significa subprogramas básicos de álgebra linear e é uma coleção de funções na linguagem de programação Python. O BLAS fornece a plataforma básica para pacotes de computação numérica modernos como Matlab, Numpy, Scipy, etc. Consiste em várias funções que podem ser usadas para executar cálculos básicos em matrizes e vetores e alguns cálculos mais complexos em sistemas de álgebra linear. No entanto, quando se trata de desempenho, o BLAS não se concentra em fornecer desempenho ideal; Seu principal objetivo é ter uma implementação padrão simples e legível. Portanto, por simplicidade e precisão numérica, blas abandonaram a otimização. Blas tem várias funções de nível, como função blas de nível 1, função de nível 2 blas e função blas nível 3. Cada nível tem várias funções para executar cálculos numéricos simples e complexos.

O que é ccepy.Linalg.blas?

O círculo.Linalg.BLAS é um módulo scipy que fornece as funções blas de baixo nível da biblioteca blas. As funções contidas no círculo.Linalg.Os módulos blas têm pouca ou nenhuma verificação de erros, e é por isso que são conhecidos como funções de baixo nível. Existem duas funções de encontro no círculo.Linalg.módulo blas, eu.e., get_blas_funcs e find_best_blas_type. Vamos entender todas as funções com a ajuda de exemplos.

Exemplo 1:

O primeiro exemplo é dedicado a explorar a função get_blas_funcs do SCIP.Linalg.módulo blas. A função get_blas_funcs tem a seguinte sintaxe:

O parâmetro "nome" mantém o nome da função blas em uma string ou sequência de strings sem um prefixo de tipo. O parâmetro "Array" mantém a sequência de matrizes multidimensionais para determinar o prefixo ideal das rotinas blas. O parâmetro "dtype" define o tipo de dados e, finalmente, o parâmetro "ILP" determina a variante de rotina ILP64. Os parâmetros "Array", "Dtype" e "ILP" são opcionais; portanto, se não forem fornecidos, os get_blas_funcs usarão os valores padrão. Como resultado, o get_blsa_funcs retorna a lista de funções encontradas.

importar numpy como np
Importar Scipy.Linalg como la
r = np.aleatório.default_rng ()
a = r.aleatório ((1, 2))
lab = la.get_blas_funcs ('gemv', (a+1j,))
Imprimir (laboratório.TypeCode)

O programa começa com a importação da biblioteca Numpy como NP e a biblioteca scipy, juntamente com o módulo Linalg como LA no programa. Depois disso, o aleatório.A função default_rng () é declarada e atribuída à variável 'r.'A variável' r 'é usada para chamar a função aleatória para gerar uma matriz de números aleatórios de 1 linha e 2 colunas. A matriz gerada foi passada para os get_blas_funcs e, finalmente.

A convenção de nomenclatura em blas refere -se ao tipo de prefixo para todas as funções, que são determinadas pelo tipo de matriz principal. Existem apenas quatro convenções de nomenclatura para todas as blas, e elas são 'c, "d," s,' e 'z' para os tipos numpy 'complex64, "float64," float32 "e' complex128 ', respectivamente, respectivamente. O tipo de dados é armazenado no atributo dType e o código é armazenado no atributo TypeCode. Então, quando chamamos o laboratório.Método TypeCode, o programa deve retornar o código da convenção de nomenclatura contra o nome da função blas fornecido. Vamos ver o resultado do código do programa que é fornecido na captura de tela abaixo:

Exemplo 2:

Como exploramos e entendemos o funcionamento de get_blas_funcs, vamos explorar e entender a função find_best_blas_type com a ajuda de um exemplo. A função find_best_blas_type é usada para obter o melhor tipo de blas correspondente, enquanto determina os prefixos ideais de rotinas blas. A sintaxe do find_best_blas_type pode ser visto abaixo:

O parâmetro "Array" inclui a sequência de matrizes multidimensionais. É usado principalmente para obter o prefixo ideal para a rotina blas. O parâmetro "dtype" é usado para definir o tipo de dados na forma de string ou dtype. A função retorna o tipo de dados numpy inferido, o caractere prefixo de blas e a rotina de pedidos.

importar numpy como np
Importar Scipy.Linalg.blas como bla
rng = np.aleatório.default_rng ()
a = rng.aleatório ((5, 5))
x = bla.find_best_blas_type ((a,))
impressão (x)
b = np.ASFORTRANARRAY (A)
y = bla.find_best_blas_type ((b,))
impressão (y)

Novamente, o programa começou a importar as bibliotecas Numpy e Scipy, juntamente com o módulo Linalg e o submódulo BLAS como NP e BLA, respectivamente. O aleatório.A função default_rng () foi chamada e usada para gerar uma matriz de 5 x 5 de números aleatórios. A matriz gerada foi passada para a função Find-Best_Blas_Type para encontrar o tipo de blas mais bem compatível. O resultado do find_best_blas_type é armazenado na variável "x" e exibido usando a função print ().

Depois disso, tentamos alterar o layout da memória para verificar como o comportamento da função find_best_blas_type mudou. Por isso, usamos a função ASFORTRANARRAY () para alterar a ordem do layout da memória e armazenamos o resultado em uma variável 'B' que é então passada para a função find_best_blas_type para encontrar o melhor tipo de correspondência de BLAs. A saída é exibida na tela usando o comando de impressão. Pode ser visto abaixo.

Observe que, primeiro, a função find_best_blas_type retornou false para a rotina preferida de ordem, o que significa que a memória não está dando preferência ao Fortran sobre C neste momento. No entanto, quando alteramos a ordem do layout da memória com a função ASfortraNarray (), a função find_best_blas_type retornou true true. Isso é compreensível porque alteramos a ordem do layout da memória, então agora a rotina do pedido fortran é preferida na ordem C.

Conclusão

Este artigo foi uma visão geral rápida das funções scipy blas. Examinamos o módulo blas com a ajuda de exemplos e aprendemos que o blas tem três níveis de funções, eu.e., Nível 1, Nível 2 e Nível 3. Para todas essas funções de três níveis, temos duas principais funções de localização: a função find_best_blas_type e a função get_blas_func. Aprendemos sobre a operação de cada função de localização usando um exemplo.