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 
Vitis BLAS Library Chart

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

  • Diese werden vornehmlich für Hardware-versierte Entwickler bereitgestellt, die die zugrunde liegende Implementierungslogik kennenlernen und Performance-Optimierungen vornehmen möchten.
  • Sie enthalten stets Stream-Schnittstellen.
  • Sie werden in der Regel für ein einzelnes Berechnungsmodul implementiert.
  • Sie können nicht direkt vom Host-Code aufgerufen werden.

L2-Kernel-Funktionen

  • Diese werden vornehmlich für Host-Code-Entwickler bereitgestellt, die sich mit APIs der Vitis Laufzeitbibliothek auskennen.
  • Sie verfügen stets über Speicherschnittstellen (DDR/HBM).
  • Sie werden gebildet durch Verkettung primitiver L1-Funktionen mit einigen Data-Mover-Modulen.
  • Sie können vom Host aufgerufen werden.

L3-Software-API-Funktionen

  • Diese werden vornehmlich für reine Softwareingenieure bereitgestellt.
  • Die Funktionsparameter sind von der Hardware unabhängig.
  • Sie werden in der Regel für die Bereitstellung verwendet.
  • Sie können vom Host aufgerufen werden.

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
Vitis BLAS Library L1 Sub-Directories

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.

Ressourcen