- Übersicht
- Erste Schritte
Bereitstellungen
Die AMD Vitis™ Graph-Bibliothek bietet:
- Eine schnelle FPGA-beschleunigte Implementierung von Graphenanalysen in einer Vielzahl von Anwendungsfällen
- In C/C++ geschriebene High-Level-Softwareschnittstellen für einfache Bedienung ohne zusätzliche Hardwarekonfigurationen
- In HLS geschriebene Low-Level-Hardwareschnittstellen für mehr Flexibilität und Kontrolle

Funktionen
Derzeit umfasst die Vitis Graph-Bibliothek die folgenden Funktionen für die Implementierung des Graphenalgorithmus:
- Funktionen für die Ähnlichkeitsanalyse
- Kosinus-Ähnlichkeit, Jaccard-Ähnlichkeit, Nächste-Nachbarn-Klassifikation
- Funktionen für die Zentralitätsanalyse
- PageRank
- Funktionen für die Ermittlung von Pfaden
- Single Source Shortest Path (SSSP), Multi-Source Shortest Path (MSSP), minimaler Spannbaum und geschätzter Durchmesser
- Funktionen für die Konnektivitätsanalyse
- Schwach verbundene Komponenten und stark verbundene Komponenten.
- Funktionen für die Erkennung der Gemeinschaftsstruktur
- Louvain-Modularität (ab 22.1 unterstützt die Louvain-API große Graphen), Label-Propagierung und Dreieckszahl.
- Funktionen für die Suche
- Breitensuche und 2-Hop-Suche.
- Funktionen für das Graphenformat
- Umnummerierung, Gradberechnung und Formatkonvertierung zwischen CSR und CSC.
Funktionsimplementierungsarten
Die Vitis Graph-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++-Funktionsschnittstellen bereit. Mit ihnen können reine Softwareentwickler Graph-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 Graph-Bibliothek derzeit keine Funktionen bereitstellt, die auf Versal AI Engine ausgeführt werden können.
Funktionen der Vitis Graph-Bibliothek | Primitive L1-Funktionen |
---|---|
denseSimilarity: Ähnlichkeitsfunktion für Graphen mit hoher Dichte | |
generalSimilarity: Ähnlichkeitsfunktion, die sowohl Graphen mit hoher als auch mit geringer Dichte unterstützt | |
sortTopK: Sortierfunktion für die obersten K der Eingabedaten | |
sparseSimilarity: Ähnlichkeitsfunktion für Graphen mit geringer Dichte | |
L2-Kernel-Funktionen | |
bfsImpl: Algorithmus für die Breitensuche | |
calcuDegree: Algorithmus zur Gradberechnung | |
connectedComponentImpl: Berechnungsalgorithmus für verbundene Komponenten | |
convertCsrCsc: Konvertiert das Graphenformat zwischen CSR und CSC | |
labelPropagation: Algorithmus für die Label-Propagierung | |
pageRankTop: PageRank-Algorithmus | |
Hinweis: Die vollständige Liste und eine Einführung in die L2-Kernel-Funktionen finden Sie hier | |
L3-Software-API-Funktionen | |
opBFS class: Algorithmus für die Breitensuche | |
opSCC class: Berechnung stark verbundener Komponenten | |
opTriangleCount class: Zählt die Dreiecke | |
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 drei Implementierungstypen sind in den entsprechenden Verzeichnissen L1, L2 und L3 in GitHub organisiert. Das folgende Diagramm zeigt den grundlegenden Aufbau der Vitis Graph-Bibliothek, jeweils für eine andere Phase der Anwendungsentwicklung.
Für L1-Unterverzeichnisse:
- include/hw: Header-Dateien für primitive Funktionen
- tests/hw/kernel: Oberste Module einschließlich Data Movers und primitive Funktionen
- tests/hw/host: Testbench und Infrastrukturunterstützung zum Aufrufen primitiver Funktionen
- tests/hw/Makefile: Wird zum Erstellen und Ausführen primitiver Funktionen verwendet
Für L2-Unterverzeichnisse:
- include/hw: Header-Dateien für Kernel-Funktionen
- tests/hw/kernel: Funktions-Wrapper für jede Kernel-Funktion
- tests/hw/host: Host-Module zum Aufrufen kompilierter Kernel-Funktionen
- tests/hw/Makefile: Wird zum Erstellen und Ausführen von Kernel-Funktionen verwendet
Für L3-Unterverzeichnisse:
- include/sw: Header-Dateien für Software-API-Funktionen
- tests/Makefile: Wird für das Erstellen und Ausführen von Software-API-Funktionen verwendet

Ausführung in Vitis GUI
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.