Funzioni di Scipy Blas

Funzioni di Scipy Blas

Le librerie Scipy e Numpy sono comunemente utilizzate per risolvere le equazioni di algebra lineare e i sistemi di algebra lineare complessivi. Indipendentemente dal linguaggio di programmazione in cui stai lavorando, puoi sempre sfruttare le librerie di codice per risolvere le equazioni di algebra lineare. Quando si tratta del linguaggio di programmazione Python, hai diverse biblioteche incredibili che ti offrono una varietà di funzioni utili da svolgere con sistemi di algebra lineare. Le funzionalità di entrambe le biblioteche (Scipy e Numpy) si sovrappongono a funzioni di algebra lineare. La libreria Scipy utilizza le caratteristiche della libreria Numpy per gestire il sistema di algebra lineare nei programmi Python. Questo articolo esplorerà le funzioni BLAS di Scipy per i sistemi di algebra lineare.

Quali sono le funzioni di Scipy Blas?

BLAS sta per i sottoprogrammi di algebra lineare di base ed è una raccolta di funzioni nel linguaggio di programmazione Python. BLAS fornisce la piattaforma di base per i moderni pacchetti di calcolo numerici come Matlab, Numpy, Scipy, ecc. È costituito da diverse funzioni che possono essere utilizzate per eseguire calcoli di base su matrici e vettori e alcuni calcoli più complessi sui sistemi di algebra lineare. Tuttavia, quando si tratta di prestazioni, Blas non si concentra sul dare prestazioni ottimali; Il suo obiettivo principale è quello di avere un'implementazione standard semplice e leggibile. Quindi, per semplicità e accuratezza numerica, BLAS fora ottimizzazione. BLAS ha varie funzioni di livello, come funzione di livello 1 BLAS, funzione di livello 2 blas e funzione di livello 3 blas. Ogni livello ha diverse funzioni per eseguire calcoli numerici semplici e complessi.

Cosa è Scipy.linalg.blas?

Il Scipy.linalg.BLAS è un modulo Scipy che fornisce le funzioni BLAS di basso livello dalla libreria BLAS. Le funzioni contenute nello Scipy.linalg.I moduli BLAS eseguono un controllo di errori poco o nessun, motivo per cui sono noti come funzioni di basso livello. Ci sono due funzioni di ricerca nello Scipy.linalg.modulo blas, i.e., get_blas_funcs e find_best_blas_type. Comprendiamo ogni funzione con l'aiuto di esempi.

Esempio 1:

Il primo esempio è dedicato all'esplorazione della funzione get_blas_funcs dallo SCIP.linalg.modulo blas. La funzione get_blas_funcs ha la seguente sintassi:

Il parametro "nome" contiene il nome della funzione BLAS in una stringa o sequenza di stringhe senza un prefisso di tipo. Il parametro "array" contiene la sequenza di array multidimensionali al fine di determinare il prefisso ottimale delle routine BLAS. Il parametro "dType" definisce il tipo di dati e, infine, il parametro "ILP" determina la variante di routine ILP64. I parametri "Array", "DType" e "ILP" sono opzionali, quindi se non vengono forniti, Get_blas_funcs utilizzerà i valori predefiniti. Come risultato, il GET_BLSA_FUNCS restituisce l'elenco delle funzioni trovate.

Importa Numpy come NP
Import Scipy.linalg come la
r = np.casuale.default_rng ()
a = r.casuale ((1, 2))
Lab = LA.get_blas_funcs ('gemv', (a+1j,))
Stampa (laboratorio.tipo di tipo)

Il programma inizia con l'importazione della libreria Numpy come NP e la Biblioteca Scipy insieme al modulo Linalg come LA nel programma. Dopodiché, il casuale.La funzione default_rng () viene dichiarata e assegnata alla variabile 'r.'La variabile' r viene utilizzata per chiamare la funzione casuale per generare un array di numeri casuali di 1 riga e 2 colonne. L'array generato è stato passato ai get_blas_funcs e infine, i metodi di tipo di tipo sono stati chiamati.

La convenzione di denominazione in BLAS si riferisce al tipo di prefisso per tutte le funzioni, che sono determinate dal tipo di matrice principale. Ci sono solo quattro convenzioni di denominazione per tutte le blas, e sono "c", "s" e "z" per i tipi numpy "complesso64," float64, "float32" e "complesso128" rispettivamente. Il tipo di dati viene archiviato nell'attributo DTYPE e il codice viene memorizzato nell'attributo TypeCode. Quindi quando chiamiamo il laboratorio.Metodo da tipo di tipo, il programma dovrebbe restituire il codice della convenzione di denominazione rispetto al nome della funzione BLAS fornito. Vediamo il risultato del codice del programma fornito nello screenshot di seguito:

Esempio 2:

Come abbiamo esplorato e compreso il funzionamento di get_blas_funcs, esploriamo e comprendiamo la funzione find_best_blas_type con l'aiuto di un esempio. La funzione find_best_blas_type viene utilizzata per ottenere il miglior tipo di abbinamento di blas determinando i prefissi ottimali di routine BLAS. La sintassi di find_best_blas_type può essere vista di seguito:

Il parametro "array" include la sequenza di array multidimensionali. Viene utilizzato principalmente per ottenere il prefisso ottimale per la routine BLAS. Il parametro "dType" viene utilizzato per definire il tipo di dati sotto forma di stringa o dType. La funzione restituisce il tipo di dati numpy dedotto, il carattere prefisso di blas e la routine dell'ordine.

Importa Numpy come NP
Import Scipy.linalg.blas come bla
rng = np.casuale.default_rng ()
a = rng.casuale ((5, 5))
X = BLA.find_best_blas_type ((a,))
Stampa (x)
b = np.asfortranarray (a)
y = bla.find_best_blas_type ((b,))
stampa (y)

Ancora una volta, il programma è iniziato con l'importazione delle librerie Numpy e Scipy insieme al modulo Linalg e BLAS come NP e BLA rispettivamente. Il casuale.La funzione default_rng () è stata chiamata e utilizzata per generare un array 5 x 5 di numeri casuali. L'array generato è stato passato alla funzione find-best_blas_type per trovare il tipo di BLA più corrispondente. Il risultato di find_best_blas_type è memorizzato nella variabile "x" e visualizzato usando la funzione print ().

Successivamente, abbiamo tentato di modificare il layout della memoria per verificare come è cambiato il comportamento della funzione find_best_blas_type. Quindi abbiamo usato la funzione asforTranaRray () per modificare l'ordine di layout della memoria e archiviato il risultato in una variabile 'B' che viene quindi passata alla funzione Find_Best_Blas_Type per trovare il miglior tipo di blas corrispondente. L'uscita viene visualizzata sullo schermo utilizzando il comando di stampa. Può essere visto di seguito.

Si noti che, in primo luogo, la funzione find_best_blas_type ha restituito false per la routine dell'ordine preferita_fortran, il che significa che la memoria non sta preferendo fortran su C a questo punto. Tuttavia, quando abbiamo modificato l'ordine di layout della memoria con la funzione asforTranaRray (), la funzione Find_Best_Blas_Type è stata restituita. Questo è comprensibile perché abbiamo cambiato l'ordine di layout della memoria, quindi ora è preferita la routine dell'ordine fortran rispetto all'ordine C.

Conclusione

Questo articolo è stata una rapida panoramica delle funzioni di Scipy Blas. Abbiamo esaminato il modulo BLAS con l'aiuto di esempi e abbiamo appreso che il blas ha tre livelli di funzioni, i.e., Livello 1, Livello 2 e Livello 3. Per tutte queste funzioni a tre livelli, abbiamo due principali funzioni di ricerca: la funzione Find_Best_Blas_Type e la funzione get_blas_func. Abbiamo appreso l'operazione di ogni funzione di ricerca utilizzando un esempio.