AMD AOCL
Wprowadzenie¶
AMD AOCL (AMD Optimizing CPU Libraries) to przygotowany przez firmę AMD zestaw popularnych bibliotek obliczeniowych z różnych dziedzin. W jego skład wchodzą implementacje dobrze znanych bibliotek dot. algebry liniowej i FFT (BLAS/LAPACK/ScaLAPACK, FFTW), jak i biblioteki przeznaczone do kompresji, szyfrowania danych czy generowania liczb pseudolosowych (RNG). Biblioteki są zoptymalizowane pod kątem procesorów AMD (z rodziny Zen).
Dostępność¶
AOCL jest dystrybuowane w formie archiwum zawierającego binarne wersje wszystkich bibliotek lub w formie gotowego pakietu systemowego (deb/rpm). Dostępne są wersje skompilowane przez AOCC (kompilator firmy AMD) lub GCC. Odpowiednie pliki można znaleźć na stronie biblioteki – patrz pobieranie AOCL.
Z uwagi na to, że AOCL to zestaw wielu bibliotek, możliwe jest również pobranie pojedynczych bibliotek. Dla niektórych z nich dostępny jest kod źródłowy, który można znaleźć w repozytorium firm AMD.
Szczegóły¶
W skład AMD AOCL wchodzą następujące bibliotek, które można podzielić na kilka kategorii.
Algebra liniowa:
-
AOCL-BLAS - Zoptymalizowana przez AMD implementacja biblioteki BLIS, dostarczającej podstawowe operacje algebry liniowej; udostępnia interfejs zgodny z BLAS. Do niedawna była znana jako AOCL-BLIS.
-
AOCL-LAPACK - Zoptymalizowana przez AMD implementacja biblioteki LAPACK (libFLAME), dostarczającej podstawowe operacje algebry liniowej; udostępnia interfejs zgodny z LAPACK (3.11.0). Do niedawna była znana jako AOCL-libFlame.
-
AOCL-Sparse - Biblioteka algebry liniowej dla rzadkich macierzy i wektorów zoptymalizowanych dla procesorów AMD. Jest przeznaczony do użytku z C i C++. AOCL-Sparse zawiera rzadkie funkcje solwera, które wykonują rozkład macierzy na czynniki i fazy rozwiązania.
-
AOCL-ScaLAPACK - Biblioteka wysokowydajnych procedur algebry liniowej dla równoległych maszyn z pamięcią rozproszoną. Może być używany do rozwiązywania układów liniowych, problemów najmniejszych kwadratów, problemów z wartościami własnymi i problemów z wartościami osobliwymi. AOCL-ScaLAPACK jest zoptymalizowany pod kątem procesorów AMD Zen. Zależy to od zewnętrznych bibliotek BLAS i LAPACK; dlatego zaleca się stosowanie AOCL-BLAS i AOCL-LAPACK.
FFT i typowe operacje matematyczne:
-
AOCL-FFTW — Obszerny zbiór szybkich procedur C do obliczania dyskretnej transformaty Fouriera (DFT) i różnych jej specjalnych przypadków. FFTW może obliczać transformacje tablic wartości rzeczywistych i zespolonych o dowolnym rozmiarze i wymiarze.
-
AOCL-LibM (AMD Math Library) — Biblioteka oprogramowania zawierająca zbiór podstawowych funkcji matematycznych zoptymalizowanych dla maszyn z procesorami x86-64. Zapewnia wiele procedur z listy standardowych funkcji matematycznych C99. Użytkownicy mogą łączyć ją ze swoimi aplikacjami, aby zastąpić funkcje matematyczne dostarczane przez bibliotekę standardową (takie jak np.
cos()
,sin()
,tan()
,log()
). Zasadniczo programiści uzyskują dostęp do podstawowych funkcji matematycznych za pośrednictwem swojego kompilatora, ale ci, którzy chcą większej dokładności lub wydajności niż funkcje matematyczne ich kompilatora, mogą skorzystać z tej biblioteki, aby udoskonalić swoje aplikacje.
Generowanie liczb losowych i kryptografia:
-
AOCL-RNG (AMD Random Number Generator) — Biblioteka generatora liczb pseudolosowych (PRNG). PRNG tworzy strumień zmiennych, które są niezależne i statystycznie nie do odróżnienia od losowej sekwencji. AOCL-RNG zapewnia kompleksowy zestaw funkcji rozkładu statystycznego, które są oparte na różnych podstawowych generatorach rozkładu równomiernego (generatory bazowe), w tym Wichmann-Hill i Mersenne Twister. Biblioteka zawiera sześć generatorów bazowych i dwadzieścia trzy generatory dystrybucyjne. Ponadto użytkownicy mogą dostarczyć generator zbudowany na zamówienie jako generator podstawowy dla wszystkich generatorów dystrybucyjnych.
-
AOCL-SecureRNG — Biblioteka, która zapewnia interfejsy API umożliwiające dostęp do zabezpieczonych kryptograficznie liczb losowych generowanych przez sprzętową implementację generatora liczb losowych firmy AMD. Są to wysokiej jakości solidne liczby losowe zaprojektowane tak, aby nadawały się do zastosowań kryptograficznych. Biblioteka korzysta z instrukcji RDRAND i RDSEED x86 udostępnianych przez sprzęt AMD. Aplikacje mogą łączyć się z biblioteką i wywoływać pojedynczą liczbę lub strumień liczb losowych. Liczby losowe mogą być 16-bitowe, 32-bitowe, 64-bitowe lub bajtów o dowolnym rozmiarze.
-
AOCL-Cryptography — Biblioteka będąca implementacjąI funkcji kryptograficznych (szyfrowanie/deszyfrowanie AES, SHA2 Digest).
Kompresja danych
- AOCL-Compression — Implementacja bezstratnych metod kompresji i dekompresji danych. Ta biblioteka obsługuje metody kompresji i dekompresji oparte na LZ4, ZLIB/DEFLATE, LZMA, ZSTD, BZIP2, Snappy i LZ4HC.
Pozostałe
-
AOCL-LibMem — Biblioteka implementująca funkcje operacji na pamięci (np.
memcpy()
) oraz operacji na łańcuchach znakowych (np.strcpy()
). -
AOCL-Utils — Biblioteka umożliwiająca sprawdzanie informacji dotyczących możliwości sprzętowych procesorów AMD z rodziny “Zen” (np. dostępne flagi, topologia pamięci cache).
Informacje o wydaniu¶
Aktualna wersja pakietu to AOCL 4.1, wydana w sierpniu 2023.