Fonctions Scipy Blas

Fonctions Scipy Blas

Les bibliothèques Scipy et Numpy sont couramment utilisées pour résoudre les équations d'algèbre linéaire et les systèmes d'algèbre linéaire globaux. Quel que soit le langage de programmation dans lequel vous travaillez, vous pouvez toujours profiter des bibliothèques de code pour résoudre les équations d'algèbre linéaires. En ce qui concerne le langage de programmation Python, vous avez plusieurs bibliothèques incroyables qui vous offrent une variété de fonctions utiles pour jouer avec des systèmes d'algèbre linéaire. Les fonctionnalités des deux bibliothèques (Scipy et Numpy) chevauchent les fonctions d'algèbre linéaire. La bibliothèque Scipy utilise les fonctionnalités de la bibliothèque Numpy pour gérer le système d'algèbre linéaire dans les programmes Python. Cet article explorera les fonctions Scipy Blas pour les systèmes d'algèbre linéaire.

Quelles sont les fonctions Scipy Blas?

BLAS signifie des sous-programmes d'algèbre linéaire de base et est une collection de fonctions dans le langage de programmation Python. Le BLAS fournit la plate-forme de base pour les packages informatiques numériques modernes comme Matlab, Numpy, Scipy, etc. Il se compose de plusieurs fonctions qui peuvent être utilisées pour effectuer des calculs de base sur les matrices et les vecteurs et quelques calculs plus complexes sur les systèmes d'algèbre linéaire. Cependant, en ce qui concerne les performances, BLAS ne se concentre pas sur les performances optimales; Son objectif principal est d'avoir une implémentation standard simple et lisible. Par conséquent, pour la simplicité et la précision numérique, Blas renonce à l'optimisation. BLAS a divers fonctions de niveau, telles que la fonction BLAS de niveau 1, la fonction BLAS Level 2 et la fonction BLAS Level 3. Chaque niveau a plusieurs fonctions pour effectuer des calculs numériques simples et complexes.

Qu'est-ce que Scipy.linalg.blas?

Le scipy.linalg.BLAS est un module Scipy qui fournit les fonctions Blas de bas niveau de la bibliothèque BLAS. Les fonctions contenues dans le scipy.linalg.Les modules BLAS effectuent peu ou pas de vérification d'erreur, c'est pourquoi ils sont connus comme des fonctions de bas niveau. Il y a deux fonctions de recherche dans le scipy.linalg.module Blas, je.e., get_blas_funcs et find_best_blas_type. Comprenons chaque fonction à l'aide d'exemples.

Exemple 1:

Le premier exemple est dédié à l'exploration de la fonction get_blas_funcs de la scip.linalg.module BLAS. La fonction get_blas_funcs a la syntaxe suivante:

Le paramètre «Nom» contient le nom de la fonction BLAS dans une chaîne ou une séquence de chaînes sans préfixe de type. Le paramètre «tableau» contient la séquence des tableaux multidimensionnels afin de déterminer le préfixe optimal des routines BLAS. Le paramètre «dtype» définit le type de données, et enfin, le paramètre «ILP» détermine la variante de routine ILP64. Les paramètres «tableau», «dtype» et «ILP» sont facultatifs, donc s'ils ne sont pas fournis, le get_blas_funcs utilisera les valeurs par défaut. En conséquence, le get_blsa_funcs renvoie la liste des fonctions trouvées.

Importer Numpy comme NP
importer scipy.Linalg comme LA
r = np.aléatoire.default_rng ()
a = r.aléatoire ((1, 2))
laboratoire = la.get_blas_funcs ('gemv', (a + 1j,))
imprimer (laboratoire.Typecode)

Le programme commence par l'importation de la bibliothèque Numpy en tant que NP et la bibliothèque Scipy avec le module Linalg en tant que LA dans le programme. Après cela, le hasard.La fonction default_rng () est déclarée et affectée à la variable 'r.`` La variable 'R' est utilisée pour appeler la fonction aléatoire pour générer un tableau de nombres aléatoires de 1 ligne et 2 colonnes. Le tableau généré a été transmis au get_blas_funcs et enfin, les méthodes de code de code ont été appelées.

La convention de dénomination dans BLAS fait référence au type de préfixe pour toutes les fonctions, qui sont déterminées par le type de matrice principale. Il n'y a que quatre conventions de dénomination pour tous les Blas, et ils sont 'C, "D," S "et' Z 'pour les types Numpy' Complex64," Float64, "Float32" et 'Complex128' respectivement. Le type de données est stocké dans l'attribut dType, et le code est stocké dans l'attribut Typecode. Alors quand nous appelons le laboratoire.Méthode Typecode, le programme est censé renvoyer le code de convention de dénomination contre le nom de fonction BLAS fourni. Voyons le résultat du code du programme qui est donné dans la capture d'écran ci-dessous:

Exemple 2:

Comme nous l'avons exploré et compris le fonctionnement de get_blas_funcs, explorons et comprenons la fonction find_best_blas_type à l'aide d'un exemple. La fonction find_best_blas_type est utilisée pour obtenir le meilleur type de correspondance de BLAS tout en déterminant les préfixes optimaux des routines BLAS. La syntaxe du find_best_blas_type peut être vue ci-dessous:

Le paramètre «tableau» comprend la séquence des tableaux multidimensionnels. Il est principalement utilisé pour obtenir le préfixe optimal pour la routine BLAS. Le paramètre «dtype» est utilisé pour définir le type de données sous la forme de chaîne ou de dtype. La fonction renvoie le type de données Numpy inféré, le caractère préfixe de BLAS et la routine d'ordre.

Importer Numpy comme NP
importer scipy.linalg.blas comme bla
rng = np.aléatoire.default_rng ()
a = rng.aléatoire ((5, 5))
x = bla.find_best_blas_type ((a,))
Imprimer (x)
b = np.asfortranarray (a)
y = bla.find_best_blas_type ((b,))
imprimer (y)

Encore une fois, le programme a commencé par l'importation des bibliothèques Numpy et Scipy avec le module Linalg et le sous-module Blas en tant que NP et BLA respectivement. Le hasard.La fonction default_rng () a été appelée et utilisée pour générer un tableau 5 x 5 de nombres aléatoires. Le tableau généré a été transmis à la fonction find-best_blas_type pour trouver le type de Blas le mieux assorti. Le résultat du find_best_blas_type est stocké dans la variable «x» et affiché à l'aide de la fonction print ().

Après cela, nous avons tenté de modifier la disposition de la mémoire pour vérifier comment le comportement de la fonction find_best_blas_type a changé. Nous avons donc utilisé la fonction asFerTRanArray () pour modifier l'ordre de mise en page de la mémoire et stocké le résultat dans une variable 'B' qui est ensuite transmise à la fonction find_best_blas_type pour trouver le meilleur type BLAS correspondant. La sortie s'affiche sur l'écran en utilisant la commande d'impression. On peut voir ci-dessous.

Notez que, premièrement, la fonction find_best_blas_type a renvoyé False pour la routine d'ordre préféré_Fertran, ce qui signifie que la mémoire ne donne pas la préférence à Fortran sur C à ce stade. Cependant, lorsque nous avons changé l'ordre de mise en page de la mémoire avec la fonction asFertranArray (), la fonction find_best_blas_type a renvoyé True. Ceci est compréhensible car nous avons changé l'ordre de mise en page de la mémoire, donc maintenant la routine de l'ordre FORTRAN est préférée à l'ordre C.

Conclusion

Cet article était un aperçu rapide des fonctions Scipy Blas. Nous avons examiné le module BLAS à l'aide d'exemples et avons appris que le BLAS a trois niveaux de fonctions, i.e., niveau 1, niveau 2 et niveau 3. Pour toutes ces fonctions à trois niveaux, nous avons deux fonctions de recherche majeures: la fonction find_best_blas_type et la fonction get_blas_func. Nous avons appris le fonctionnement de chaque fonction de recherche en utilisant un exemple.