Scipy Blas -funksjoner

Scipy Blas -funksjoner

Scipy og numpy biblioteker brukes ofte til å løse lineære algebra -ligninger og generelle lineære algebra -systemer. Uansett hvilket programmeringsspråk du jobber på, kan du alltid dra nytte av biblioteker for å løse lineære algebra -ligninger. Når det gjelder Python -programmeringsspråket, har du flere utrolige biblioteker som tilbyr deg en rekke nyttige funksjoner å spille med lineære algebra -systemer. Begge bibliotekene (scipy og numpy) funksjonalitet overlapper hverandre med lineære algebrafunksjoner. Scipy -biblioteket bruker funksjonene i Numpy -biblioteket for å administrere det lineære algebra -systemet i Python -programmer. Denne artikkelen vil utforske Scipy BLAS -funksjonene for lineære algebra -systemer.

Hva er Scipy Blas -funksjoner?

Blas står for grunnleggende lineære algebra -delprogrammer og er en samling av funksjoner i Python -programmeringsspråket. Blas gir den grunnleggende plattformen for moderne numeriske databehandlingspakker som Matlab, Numpy, Scipy, etc. Den består av flere funksjoner som kan brukes til å utføre grunnleggende beregninger på matriser og vektorer og noen mer komplekse beregninger på lineære algebra -systemer. Når det gjelder ytelse, fokuserer imidlertid BLAs ikke på å gi optimal ytelse; Hovedmålet er å ha en enkel og lesbar standardimplementering. Derfor, for enkelhets skyld og numerisk nøyaktighet, foregår BLAer optimalisering. BLA har forskjellige nivåfunksjoner, for eksempel BLAS nivå 1 -funksjon, BLAS nivå 2 -funksjon og BLAS nivå 3 -funksjon. Hvert nivå har flere funksjoner for å utføre enkle så vel som komplekse numeriske beregninger.

Hva er scipy.Lining.blas?

Scipy.Lining.Blas er en scipy-modul som gir BLAS-funksjoner på lavt nivå fra BLAS-biblioteket. Funksjonene i scipy.Lining.BLAS-moduler utfører liten eller ingen feilsjekking, og det er grunnen til at de er kjent som funksjoner på lavt nivå. Det er to å finne funksjoner i scipy.Lining.Blas -modul, jeg.e., get_blas_funcs og find_best_blas_type. La oss forstå alle funksjoner ved hjelp av eksempler.

Eksempel 1:

Det første eksemplet er dedikert til å utforske get_blas_funcs -funksjonen fra scip.Lining.BLAS -modul. Get_blas_funcs -funksjonen har følgende syntaks:

Parameteren “Navn” holder navnet på BLAS -funksjonen i en streng eller sekvens av strenger uten type prefiks. Parameteren “Array” holder sekvensen av flerdimensjonale matriser for å bestemme det optimale prefikset av BLAS -rutiner. Parameteren “dtype” definerer typen data, og til slutt bestemmer parameteren “ILP” ILP64 -rutinen varianten. "Array", "dtype" og "ILP" -parametere er valgfrie, så hvis de ikke er gitt, vil get_blas_funcs bruke standardverdiene. Som et resultat returnerer get_blsa_funcs listen over funksjoner som er funnet.

Importer numpy som NP
Importer scipy.Lining som la
r = np.tilfeldig.standard_rng ()
a = r.tilfeldig ((1, 2))
lab = la.get_blas_funcs ('gemv', (a+1j,))
trykk (lab.typecode)

Programmet begynner med å importere Numpy -biblioteket som NP og Scipy -biblioteket sammen med Linald -modulen som LA inn i programmet. Etter det, det tilfeldige.Default_rng () -funksjonen er erklært og tilordnet variabelen 'r.'The Variable' R 'brukes til å kalle den tilfeldige funksjonen for å generere en tilfeldig tallutvalg på 1 rad og 2 kolonner. Den genererte matrisen er blitt sendt til get_blas_funcs, og til slutt er skrivemetodene blitt kalt.

Navnekonvensjonen i BLA refererer til typen prefiks for alle funksjonene, som bestemmes av typen hovedmatrise. Det er bare fire navnekonvensjoner for alle BLA -er, og de er 'C,' D, 'S,' og 'Z' for Numpy Types 'Complex64, "Float64," Float32,' og 'Complex128'. Datatypen lagres i DTTYPE -attributtet, og koden lagres i skrivekodeattributtet. Så når vi ringer laboratoriet.Typecode -metoden, er det meningen at programmet skal returnere navnekonvensjonskoden mot BLAS -funksjonsnavnet som er gitt. La oss se resultatet av programkoden som er gitt i skjermdumpen nedenfor:

Eksempel 2:

Som vi har utforsket og forstått arbeidet med get_blas_funcs, la oss utforske og forstå Find_best_blas_type -funksjonen ved hjelp av et eksempel. FUND_BEST_BLAS_TYPE -funksjonen brukes til å få den beste matchende typen BLA -er mens du bestemmer de optimale prefikser av BLAS -rutiner. Syntaksen til find_best_blas_type kan sees nedenfor:

Parameteren "Array" inkluderer sekvensen av flerdimensjonale matriser. Det brukes først og fremst for å oppnå det optimale prefikset for BLAS -rutinen. Parameteren “dtype” brukes til å definere datatypen i form av streng eller dtype. Funksjonen returnerer den utledede numpy datatypen, prefikset Karakteren til BLAS og ordrerutinen.

Importer numpy som NP
Importer scipy.Lining.blas som bla
RNG = NP.tilfeldig.standard_rng ()
a = rng.tilfeldig ((5, 5))
x = bla.find_best_blas_type ((a,))
trykk (x)
B = NP.AsfortRanArray (a)
y = bla.find_best_blas_type ((b,))
trykk (y)

Igjen startet programmet med å importere Numpy og Scipy -bibliotekene sammen med henholdsvis Lining -modulen og BLAS -undermodulen som NP og BLA. Det tilfeldige.Default_rng () -funksjonen er blitt kalt og brukt til å generere en 5 x 5 -rekke tilfeldige tall. Den genererte matrisen har blitt sendt til Find-BEST_BLAS_TYPE-funksjonen for å finne den best matchede typen BLAS. Resultatet av find_best_blas_type lagres i variabelen “x” og vises ved hjelp av print () -funksjonen.

Etter det forsøkte vi å endre minneoppsettet for å sjekke hvordan oppførselen til Find_best_blas_type -funksjonen ble endret. Så vi brukte AsforRanArray () -funksjonen for å endre minneoppsettordren og lagret resultatet i en variabel 'B' som deretter sendes til Find_Best_BLAS_Type -funksjonen for å finne den beste matchende BLAS -typen. Utgangen vises på skjermen ved å bruke utskriftskommandoen. Det kan sees nedenfor.

Legg merke til at for det første at Find_Best_BLAS_TYPE -funksjonen returneres falsk for Prefer_fortran Order -rutinen, som betyr at minne ikke gir preferanse til Fortran fremfor C på dette tidspunktet. Imidlertid, når vi endret minnelayoutrekkefølgen med ASFORTRANARRAY () -funksjonen, returnerte Find_Best_blas_Type -funksjonen sann. Dette er forståelig fordi vi endret minneoppsettordren, så nå er Forran Order -rutinen foretrukket fremfor C -ordren.

Konklusjon

Denne artikkelen var en rask oversikt over Scipy Blas -funksjoner. Vi undersøkte BLAS -modulen ved hjelp av eksempler og lærte at BLA har tre funksjonsnivåer, i.e., Nivå 1, nivå 2 og nivå 3. For alle disse tre-nivåfunksjonene har vi to viktige funnfunksjoner: Find_best_blas_type-funksjonen og get_blas_func-funksjonen. Vi lærte om hver Finding Functions operasjon ved å bruke et eksempel.