Funciones de Blas Scipy

Funciones de Blas Scipy

Las bibliotecas SciPy y Numpy se usan comúnmente para resolver ecuaciones de álgebra lineal y sistemas de álgebra lineal general. Independientemente del lenguaje de programación en el que esté trabajando, siempre puede aprovechar las bibliotecas de código para resolver las ecuaciones de álgebra lineal. Cuando se trata del lenguaje de programación de Python, tiene varias bibliotecas increíbles que le ofrecen una variedad de funciones útiles para jugar con sistemas de álgebra lineal. Las funcionalidades de ambas bibliotecas (Scipy y Numpy) se superponen con funciones de álgebra lineal. La biblioteca Scipy utiliza las características de la biblioteca Numpy para administrar el sistema de álgebra lineal en los programas de Python. Este artículo explorará las funciones de scipy blas para sistemas de álgebra lineal.

¿Cuáles son las funciones de scipy blas??

BLAS significa subprogramas de álgebra lineal básica y es una colección de funciones en el lenguaje de programación de Python. El BLAS proporciona la plataforma básica para paquetes de computación numéricos modernos como Matlab, Numpy, Scipy, etc. Consiste en varias funciones que pueden usarse para realizar cálculos básicos en matrices y vectores y algunos cálculos más complejos en sistemas de álgebra lineal. Sin embargo, cuando se trata de rendimiento, BLAS no se centra en dar un rendimiento óptimo; Su objetivo principal es tener una implementación estándar simple y legible. Por lo tanto, para la simplicidad y la precisión numérica, BLAS renuncia a la optimización. BLAS tiene varias funciones de nivel, como la función de nivel 1 BLAS, la función de nivel 2 de BLAS y la función de nivel 3 de BLAS. Cada nivel tiene varias funciones para realizar cálculos numéricos simples y complejos.

Que es scipy.linalg.blas?

El scipy.linalg.BLAS es un módulo Scipy que proporciona las funciones BLAS de bajo nivel de la Biblioteca BLAS. Las funciones contenidas en el scipy.linalg.Los módulos BLAS realizan poco o ninguna verificación de errores, por lo que se conocen como funciones de bajo nivel. Hay dos funciones de búsqueda en el scipy.linalg.módulo blas, yo.mi., get_blas_funcs y find_best_blas_type. Entendamos cada función con la ayuda de ejemplos.

Ejemplo 1:

El primer ejemplo se dedica a explorar la función get_blas_funcs desde el scip.linalg.módulo BLAS. La función get_blas_funcs tiene la siguiente sintaxis:

El parámetro "Nombre" contiene el nombre de la función BLAS en una cadena o secuencia de cadenas sin un prefijo de tipo. El parámetro "matriz" contiene la secuencia de matrices multidimensionales para determinar el prefijo óptimo de las rutinas BLAS. El parámetro "dtype" define el tipo de datos y, por último, el parámetro "ILP" determina la variante de rutina ILP64. Los parámetros "matriz", "dtype" e "ILP" son opcionales, por lo que si no se proporcionan, el get_blas_funcs usará los valores predeterminados. Como resultado, el get_blsa_funcs devuelve la lista de funciones encontradas.

importar numpy como np
importación.linalg como la
R = NP.aleatorio.default_rng ()
a = r.aleatorio ((1, 2))
Lab = LA.get_blas_funcs ('gemv', (a+1j,)))
impresión (laboratorio.Typecode)

El programa comienza con la importación de la biblioteca Numpy como NP y la biblioteca Scipy junto con el módulo Linalg como LA en el programa. Después de eso, el aleatorio.La función de default_rng () se declara y se asigna a la variable 'r.'La variable' r 'se usa para llamar a la función aleatoria para generar una matriz de números aleatorios de 1 fila y 2 columnas. La matriz generada se ha pasado al get_blas_funcs y finalmente, se han llamado a los métodos typecode.

La convención de nombres en BLAS se refiere al tipo de prefijo para todas las funciones, que están determinadas por el tipo de matriz principal. Solo hay cuatro convenciones de nombres para todos los BLA, y son 'C ", D," S y' Z 'para los tipos Numpy' Complex64, "Float64," Float32 y 'Complex128' respectivamente. El tipo de datos se almacena en el atributo dtype y el código se almacena en el atributo typecode. Entonces, cuando llamamos al laboratorio.Método typecode, se supone que el programa devuelve el código de convención de nomenclatura al nombre de la función BLAS proporcionado. Veamos el resultado del código del programa que se da en la captura de pantalla a continuación:

Ejemplo 2:

Como hemos explorado y entendido el funcionamiento de get_blas_funcs, exploremos y comprendamos la función find_best_blas_type con la ayuda de un ejemplo. La función find_best_blas_type se usa para obtener el mejor tipo de BLAS coincidente mientras determina los prefijos óptimos de las rutinas BLAS. La sintaxis del find_best_blas_type se puede ver a continuación:

El parámetro "matriz" incluye la secuencia de matrices multidimensionales. Se utiliza principalmente para obtener el prefijo óptimo para la rutina BLAS. El parámetro "dtype" se usa para definir el tipo de datos en forma de cadena o dtype. La función devuelve el tipo de datos numpy inferido, el carácter de prefijo de BLAS y la rutina de pedidos.

importar numpy como np
importación.linalg.Blas como bla
rng = np.aleatorio.default_rng ()
a = rng.aleatorio ((5, 5))
x = bla.find_best_blas_type ((a,)))
Imprimir (x)
B = NP.AsfortranArray (a)
y = bla.find_best_blas_type ((b,))
Imprimir (y)

Nuevamente, el programa comenzó con la importación de las bibliotecas numpy y scipy junto con el módulo Linalg y el submódulo BLAS como NP y BLA respectivamente. Lo aleatorio.La función de default_rng () se ha llamado y utilizado para generar una matriz de 5 x 5 de números aleatorios. La matriz generada se ha pasado a la función Find-Best_Blas_Type para encontrar el tipo de BLAS mejor coincidente. El resultado del find_best_blas_type se almacena en la variable "x" y se muestra usando la función print ().

Después de eso, intentamos cambiar el diseño de la memoria para verificar cómo cambió el comportamiento de la función find_best_blas_type. Entonces usamos la función asforTranArray () para cambiar el orden de diseño de memoria y almacenamos el resultado en una variable 'B' que luego se pasa a la función Find_Best_Blas_Type para encontrar el mejor tipo de BLAS coincidente. La salida se muestra en la pantalla utilizando el comando de impresión. Se puede ver a continuación.

Tenga en cuenta que, primero, la función find_best_blas_type devolvió falso para la rutina de pedido prefer_fortran, lo que significa que la memoria no está dando preferencia a Fortran sobre C en este punto. Sin embargo, cuando cambiamos el orden de diseño de memoria con la función AsforTranArray (), la función Find_Best_Blas_Type devolvió True. Esto es comprensible porque cambiamos el orden de diseño de memoria, por lo que ahora se prefiere la rutina de orden de Fortran sobre el orden C.

Conclusión

Este artículo fue una visión general rápida de las funciones de scipy blas. Examinamos el módulo BLAS con la ayuda de ejemplos y aprendimos que el BLAS tiene tres niveles de funciones, yo.mi., Nivel 1, Nivel 2 y Nivel 3. Para todas estas funciones de tres niveles, tenemos dos funciones de búsqueda principales: la función find_best_blas_type y la función get_blas_func. Aprendimos sobre la operación de cada función de búsqueda utilizando un ejemplo.