- Übersicht
- Erste Schritte
Bereitstellungen
Die AMD Vitis™ BLAS-Bibliothek bietet:
- Eine schnelle FPGA-beschleunigte Implementierung der standardmäßigen Basic Linear Algebra Subroutines (BLAS)
- In C, C++ und Python geschriebene High-Level-Softwareschnittstellen für Benutzerfreundlichkeit ohne zusätzliche Hardwarekonfigurationen
- In HLS geschriebene Low-Level-Hardwareschnittstellen für mehr Flexibilität und Kontrolle

Funktionen
Die Vitis BLAS-Bibliothek umfasst die folgenden Funktionen für Matrix- und Vektoroperationen:
Funktionen für Matrixoperationen:
- Allgemeine Matrixmultiplikation
Funktionen für Vektoroperationen:
- Position des Vektorelements suchen
- Größe der Vektorelemente akkumulieren
- Punktprodukt zweier Vektoren berechnen
- Skalarprodukt eines Vektors mit sich selbst berechnen
- Euklidische Norm eines Vektors berechnen
- Vektoren austauschen, skalieren, kopieren
Funktionen für Matrix-Vektor-Operationen:
- Allgemeine Matrix-Vektor-Multiplikation
- Allgemeine Multiplikation mit Bandmatrix-Vektoren
- Symmetrische Matrix-Vektor-Multiplikation
- Dreiecksmatrix-Vektor-Multiplikation
Funktionsimplementierungsarten
Die Vitis BLAS-Bibliothek bietet drei Arten von Funktionsimplementierungen, nämlich primitive L1-Funktionen, L2-Kernel-Funktionen und L3-Software-API-Funktionen. Primitive L1-Funktionen können von FPGA-Hardwareentwicklern genutzt werden. L2-Kernel-Funktionen werden durch die Integration von primitiven L1-Funktionen und Data Movers erstellt, die durch Host-Codes mit der Vitis Laufzeitbibliothek aufgerufen werden können. L3-Software-API-Funktionen stellen C-, C++- und Python-Funktionsschnittstellen bereit. Mit ihnen können reine Softwareentwickler BLAS-Vorgänge ohne zusätzliche hardwarebezogene Konfigurationen auf AMD Plattformen auslagern. Einige Funktionen der drei Implementierungsarten sind in der folgenden Tabelle aufgeführt. Beachten Sie, dass die Vitis BLAS-Bibliothek derzeit keine Funktionen bereitstellt, die auf Versal AI Engine ausgeführt werden können.
Funktionen der Vitis BLAS-Bibliothek | Primitive L1-Funktionen |
---|---|
amax, amin: Position des Vektorelements suchen | |
asum: Größe von Vektorelementen akkumulieren | |
dot: Punktprodukt zweier Vektoren berechnen | |
axpy: Skalarprodukt eines Vektors mit sich selbst berechnen und es dem Vektor hinzufügen | |
nrm2: Euklidische Norm eines Vektors berechnen | |
swap, scal, copy: Vektoren austauschen, skalieren und kopieren | |
symv: symmetrische Matrix-Vektor-Multiplikation | |
trmv: Dreiecksmatrix-Vektor-Multiplikation | |
L2-Kernel-Funktionen | |
GEMM class: allgemeine Matrixmultiplikation | |
Gemv class: allgemeine Matrix-Vektor-Multiplikation | |
L3-Software-API-Funktionen | |
xfblasCreate: Bibliothek initialisieren und Handle erstellen | |
xfblasFree: Speicher auf dem FPGA-Chip freigeben | |
xfblasGetMatrix: Matrix im FPGA-Chipspeicher auf den Host kopieren | |
xfblasExecute: Kernel starten und warten, bis der Vorgang beendet ist | |
Hinweis: Die vollständige Liste und eine Einführung in die L3-Software-API-Funktionen finden Sie hier. |
Die detaillierte Unterscheidung zwischen den primitiven L1-Funktionen und L2-Kernel-Funktionen finden Sie in der folgenden Tabelle.
Primitive L1-Funktionen |
|
L2-Kernel-Funktionen |
|
L3-Software-API-Funktionen |
|
Organisation
Die Vitis BLAS-Bibliothek bietet drei Arten von Funktionsimplementierungen, nämlich primitive L1-Funktionen, L2-Kernel-Funktionen und L3-Software-API-Funktionen. Primitive L1-Funktionen können von FPGA-Hardwareentwicklern genutzt werden. L2-Kernel-Funktionen werden durch die Integration von primitiven L1-Funktionen und Data Movers erstellt, die durch Host-Codes mit der Vitis Laufzeitbibliothek aufgerufen werden können. L3-Software-API-Funktionen stellen C-, C++- und Python-Funktionsschnittstellen bereit. Mit ihnen können reine Softwareentwickler BLAS-Vorgänge ohne zusätzliche hardwarebezogene Konfigurationen auf AMD Plattformen auslagern. Einige Funktionen der drei Implementierungsarten sind in der folgenden Tabelle aufgeführt. Beachten Sie, dass die Vitis BLAS-Bibliothek derzeit keine Funktionen bereitstellt, die auf Versal AI Engine ausgeführt werden können.
Für L1-Unterverzeichnisse:
- include/hw: Header-Dateien für primitive Funktionen
- tests/hw: oberste Module einschließlich Data Movers und primitive Funktionen
- tests/sw: Testbench und Infrastrukturunterstützung zum Aufrufen primitiver Funktionen
Für L2-Unterverzeichnisse:
- include/hw: Header-Dateien für Kernel-Funktionen
- include/sw: Host-Module zum Aufrufen von Kernel-Funktionen
- tests/hw: Enthält die Makefiles, die für die Erstellung der einzelnen implementierten Kernel-Funktionen verwendet werden
Für L3-Unterverzeichnisse:
- include/sw: Header-Dateien für Software-API-Funktionen
- tests/sw: Enthält die Makefiles, die zum Testen der einzelnen implementierten Software-API-Funktionen verwendet werden

Ausführung in Vitis IDE
Die im Vitis GitHub-Repository verfügbaren Bibliotheken können entweder mit den bereitgestellten Makefiles für L2- und L3-Funktionen (wie oben beschrieben) oder mit der Vitis IDE kompiliert werden. Um die Bibliothek in der IDE verwenden zu können, müssen Sie sie zunächst als Bibliotheksvorlage herunterladen. Anschließend müssen Sie mithilfe der Vorlage ein neues Vitis Projekt erstellen. Weitere Informationen zum Erstellen von L2- oder L3-Anwendungen mithilfe der Bibliotheksvorlage in der Vitis GUI finden Sie hier.