- Présentation
- Introduction
Dispositions
La bibliothèque AMD Vitis™ Graph fournit :
- Une mise en œuvre rapide accélérée par FPGA de l'analyse graphique dans une grande variété de cas d'utilisation
- Des interfaces software de haut niveau écrites en C/C++ pour une facilité d'utilisation sans configuration hardware supplémentaire
- Des interfaces hardware de bas niveau écrites en HLS pour plus de flexibilité et de contrôle

Fonctions
Actuellement, la bibliothèque Vitis Graph inclut les fonctions suivantes pour les implémentations de l'algorithme graphique :
- Fonctions pour l'analyse de similarité
- Similarité cosinus, similarité Jaccard, voisin K le plus proche
- Fonctions pour l'analyse de centralité
- PageRank
- Fonctions de recherche de chemin
- Chemin le plus court à source unique, chemin le plus court multi-source, Spanning Tree minimum et diamètre estimé.
- Fonctions d'analyse de la connectivité
- Composants faiblement et fortement connectés.
- Fonctions de détection de communauté
- Modularité de Louvain (à partir de 22.1, l'API de Louvain peut prendre en charge des graphes de grande échelle), propagation des étiquettes et décompte des triangles.
- Fonctions de recherche
- Parcours en largeur et recherche en 2 étapes.
- Fonctions pour le format graphique
- Réattribution, calcul du degré et conversion de format entre CSR et CSC.
Types d'implémentation de fonction
La bibliothèque Vitis Graph fournit trois types d'implémentation de fonctions, à savoir les fonctions primitives L1, les fonctions de noyau L2 et les fonctions d'API software L3. Les fonctions primitives L1 peuvent être exploitées par les développeurs de hardware FPGA. Les fonctions du noyau L2 sont construites en intégrant des fonctions primitives L1 et des Data Movers, qui peuvent être appelés par des codes d'hôte avec la bibliothèque Vitis Runtime. Les fonctions API software L3 fournissent des interfaces de fonction C++ pour permettre aux développeurs de software purs de décharger les opérations graphiques sur les plateformes AMD sans configuration hardware supplémentaire. Certaines fonctions des trois types sont répertoriées dans le tableau ci-dessous. Notez que la bibliothèque Vitis Graph ne fournit actuellement aucune fonction s'exécutant sur Versal AI Engine.
Fonctions de la bibliothèque Vitis Graph | Fonctions primitives L1 |
---|---|
denseSimilarity : fonction de similarité pour le graphe dense | |
generalSimilarity : fonction de similarité qui prend en charge à la fois les données denses et éparses. | |
sortTopK : fonction de tri pour le K supérieur des données d'entrée | |
sparseSimularity : fonction de similarité pour le graphique épars | |
Fonctions du noyau L2 | |
bfsImpl : algorithme de parcours en largeur | |
calcuDegree : algorithme de calcul de degrés | |
connectedComponentImpl : algorithme de calcul du composant connecté | |
convertCsrCsc : permet de convertir le format du graphique entre Csr et Csc | |
labelPropagation : algorithme de propagation de libellé | |
pageRankTop : algorithme de pagination | |
Remarque : La liste complète des fonctions du noyau L2 et l'introduction sont disponibles ici | |
Fonctions API du software L3 | |
opBFS class : algorithme de parcours en largeur | |
opSCC class : calcul des composants fortement connectés | |
opTriangleCount class : décompte du nombre de triangles | |
Remarque : La liste complète des fonctions API software L3 et l'introduction sont disponibles ici. |
Pour connaître les différences détaillée entre les fonctions primitives L1 et du noyau L2, veuillez vous reporter au tableau ci-dessous.
Fonctions primitives L1 |
|
Fonctions du noyau L2 |
|
Fonctions API software L3 |
|
Organisation
Les trois types de mises en œuvre sont organisés dans les répertoires L1, L2 et L3 correspondants dans Github. Le schéma ci-dessous montre l'organisation principale de la bibliothèque Vitis Graph, chacune se rapportant à une étape différente du développement d'application.
Pour les sous-répertoires L1 :
- include/hw : les fichiers d'en-tête pour les fonctions primitives
- tests/hw/kernel : les principaux modules, y compris les data movers et les fonctions primitives
- tests/hw/host : le banc d'essai et l'infrastructure d'assistance pour appeler des fonctions primitives
- tests/hw/Makefile : utilisé pour créer et exécuter des fonctions primitives
Pour les sous-répertoires L2 :
- include/hw : les fichiers d'en-tête pour les fonctions du noyau
- tests/hw/kernel : un wrapper de fonction pour chaque fonction de noyau
- tests/hw/host : modules hôtes pour appeler les fonctions du noyau compilé
- tests/hw/Makefile : utilisé pour créer et exécuter les fonctions du noyau
Pour les sous-répertoires L3 :
- include/sw : fichiers d'en-tête pour les fonctions API software
- tests/Makefile : utilisé pour créer et exécuter les fonctions API software

Exécution dans la GUI (interface graphique utilisateur) Vitis
Les bibliothèques disponibles dans le référentiel Vitis GitHub peuvent être compilées à l'aide des Makefiles fournis pour les fonctions L2 et L3 comme indiqué ci-dessus ou à l'aide de l'IDE Vitis. Pour pouvoir être utilisée dans l'IDE, la bibliothèque doit d'abord être téléchargée en tant que modèle de bibliothèque, puis un nouveau projet Vitis doit être créé à l'aide du modèle. Vous trouverez plus d'informations sur la création d'applications L2 ou L3 à l'aide du modèle de bibliothèque dans la GUI (interface graphique utilisateur) de Vitis ici.