SCIPY BLAS Funkcje

SCIPY BLAS Funkcje

Biblioteki Scipy i Numpy są powszechnie używane do rozwiązywania równań algebry liniowej i ogólnych systemów algebry liniowej. Niezależnie od tego, w jakim języku programowania pracujesz, zawsze możesz skorzystać z bibliotek kodu, aby rozwiązać liniowe równania algebry. Jeśli chodzi o język programowania Python, masz kilka niesamowitych bibliotek, które oferują różne przydatne funkcje do odtwarzania z liniowymi systemami algebry. Obie biblioteki (SCIPY i Numpy) Funkcje pokrywają się z funkcjami algebry liniowej. Biblioteka Scipy wykorzystuje funkcje biblioteki Numpy do zarządzania liniowym systemem algebry w programach Python. W tym artykule zbadano funkcje SCIPY BLAS dla systemów algebry liniowej.

Jakie są funkcje Scipy BLAS?

BLAS oznacza podstawowe liniowe podprogramy algebry i jest zbiorem funkcji w języku programowania Python. BLAS zapewnia podstawową platformę dla nowoczesnych pakietów obliczeniowych, takich jak Matlab, Numpy, Scipy itp. Składa się z kilku funkcji, które można wykorzystać do wykonywania podstawowych obliczeń dotyczących macierzy i wektorów oraz niektórych bardziej złożonych obliczeń dotyczących liniowych systemów algebry. Jednak jeśli chodzi o wydajność, BLAS nie koncentruje się na zapewnianiu optymalnej wydajności; Jego głównym celem jest posiadanie prostej i czytelnej standardowej implementacji. Stąd, dla prostoty i dokładności liczbowej, BLA rezygnuje z optymalizacji. BLAS ma różne funkcje poziomu, takie jak funkcja BLA poziomu 1, funkcja BLAS poziomu 2 i funkcja BLAS poziomu 3. Każdy poziom ma kilka funkcji do wykonywania prostych i złożonych obliczeń numerycznych.

Co to jest Scipy.Linalg.Blas?

Scipy.Linalg.BLAS to moduł scipy, który zapewnia funkcje BLA na niskim poziomie z biblioteki BLAS. Funkcje zawarte w Scipy.Linalg.Moduły BLAS wykonują niewiele lub żaden sprawdzanie błędów, dlatego są znane jako funkcje niskiego poziomu. Istnieją dwie funkcje znalezienia w Scipy.Linalg.moduł BLAS, i.mi., get_blas_funcs i find_best_blas_type. Zrozumiemy każdą funkcję za pomocą przykładów.

Przykład 1:

Pierwszy przykład jest poświęcony eksploracji funkcji get_blas_funcs z SCIP.Linalg.Moduł BLAS. Funkcja get_blas_funcs ma następującą składnię:

Parametr „Nazwa” zawiera nazwę funkcji BLAS w ciągu lub sekwencji ciągów bez prefiksu typu. „Parametr„ tablica ”zawiera sekwencję tablic wielowymiarowych w celu ustalenia optymalnego prefiksu procedur BLAS. Parametr „Dtype” określa typ danych, a na koniec parametr „ILP” określa rutynowy wariant ILP64. Parametry „tablica”, „dType” i „ILP” są opcjonalne, więc jeśli nie są dostarczone, get_blas_funcs użyje wartości domyślnych. W rezultacie get_blsa_funcs zwraca listę znalezionych funkcji.

importować Numpy jako NP
Import Scipy.Linalg jako la
r = np.losowy.default_rng ()
a = r.losowy ((1, 2))
lab = la.get_blas_funcs („gemv”, (a+1J,)))
Drukuj (laboratorium.typeCode)

Program zaczyna się od importu biblioteki Numpy jako NP i biblioteki Scipy wraz z modułem Linalg jako LA w programie. Potem losowe.Funkcja default_rng () jest zadeklarowana i przypisana do zmiennej „r.„Zmienna” R ”służy do wywołania funkcji losowej w celu wygenerowania losowej tablicy liczb 1 rzędu i 2 kolumn. Wygenerowana tablica została przekazana do get_blas_funcs, a na koniec wywołano metody typeCode.

Konwencja nazewnictwa w BLA odnosi się do rodzaju przedrostka dla wszystkich funkcji, które są określone przez rodzaj macierzy głównej. Istnieją tylko cztery konwencje nazewnictwa dla wszystkich BLA, a to są odpowiednio „C”, „S” i „Z” dla typów Numpy ”,„ Float64, „Float32,” i „Complex128” odpowiednio. Typ danych jest przechowywany w atrybucie Dtype, a kod jest przechowywany w atrybucie typeCode. Więc kiedy nazywamy laboratorium.Metoda typeCode, program ma zwrócić kod konwencji nazewnictwa w stosunku do podanej nazwy funkcji BLAS. Zobaczmy wynik kodu programu podany na zrzucie ekranu poniżej:

Przykład 2:

Jak zbadaliśmy i zrozumieliśmy działanie get_blas_funcs, zbadajmy i zrozummy funkcję FINK_BEST_BLAS_TYPE za przykład. Funkcja Find_Best_Blas_Type służy do uzyskania najlepszego typu BLAS przy jednoczesnym określaniu optymalnych prefiksów procedur BLAS. Składnia FINK_BEST_BLAS_TYPE można zobaczyć poniżej:

Parametr „tablica” obejmuje sekwencję tablic wielowymiarowych. Służy przede wszystkim do uzyskania optymalnego przedrostka dla rutyny BLAS. Parametr „Dtype” służy do zdefiniowania typu danych w postaci ciągów lub dtype. Funkcja zwraca wnioskowane typ danych Numpy, znak przedrostka BLA i rutyna zamówienia.

importować Numpy jako NP
Import Scipy.Linalg.Blas jak bla
rng = np.losowy.default_rng ()
a = rng.losowy ((5, 5))
x = bla.find_best_blas_type ((a,))
Drukuj (x)
B = NP.AsfortranArray (A)
y = bla.find_best_blas_type ((b,))
Drukuj (y)

Ponownie program rozpoczął się od importowania bibliotek Numpy i Scipy wraz z modułem Linalg i submodule BLAS odpowiednio jako NP i BLA. Losowe.Funkcja default_rng () została wywołana i użyta do generowania tablicy liczb losowych 5 x 5. Wygenerowana tablica została przekazana do funkcji FIND-BEST_BLAS_TYPE, aby znaleźć najlepiej dopasowany typ BLA. Wynik FIND_BEST_BLAS_TYPE jest przechowywany w zmiennej „x” i wyświetlany za pomocą funkcji print ().

Następnie próbowaliśmy zmienić układ pamięci, aby sprawdzić, jak zmieniono zachowanie funkcji FINK_BEST_BLAS_TYPE. Użyliśmy więc funkcji AsFortranArray (), aby zmienić kolejność układu pamięci i zapisaliśmy wynik w zmiennej „B”, która jest następnie przekazywana do funkcji FIND_BEST_BLAS_TYPE, aby znaleźć najlepszy pasujący typ BLAS. Wyjście jest wyświetlane na ekranie za pomocą polecenia wydruku. Można to zobaczyć poniżej.

Zauważ, że po pierwsze, funkcja FINK_BEST_BLAS_TYPE zwróciła fałsz dla procedury zamówienia prefer_fortran, co oznacza, że ​​pamięć nie daje preferencji Fortranowi przez C w tym momencie. Jednak kiedy zmieniliśmy kolejność układu pamięci za pomocą funkcji AsFortranArray (), funkcja Find_Best_Blas_Type zwróciła true. Jest to zrozumiałe, ponieważ zmieniliśmy kolejność układu pamięci, więc teraz rutyna zamówienia Fortrana jest preferowana w stosunku do kolejności C.

Wniosek

Ten artykuł był szybkim przeglądem funkcji Scipy BLAS. Zbadaliśmy moduł BLAS za pomocą przykładów i dowiedzieliśmy się, że BLA ma trzy poziomy funkcji, i.mi., Poziom 1, poziom 2 i poziom 3. W przypadku wszystkich tych trzypoziomowych funkcji mamy dwie główne funkcje znalezienia: funkcję Find_Best_Blas_Type i funkcję get_blas_func. Dowiedzieliśmy się o operacji każdej funkcji znalezienia za pomocą przykładu.