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 
AMD Vitis Graph Library Provisions Diagram

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

  • Principalement destinées aux développeurs qui souhaitent connaître la logique de mise en œuvre sous-jacente et optimiser les performances ;
  • possèdent toujours des interfaces de flux ;
  • sont normalement implémentées pour un seul module de calcul ;
  • ne peuvent pas être appelées directement par le code hôte.

Fonctions du noyau L2

  • Principalement destiné aux développeurs de code hôte qui connaissent les API de la bibliothèque Vitis Runtime ;
  • dispose toujours d'interfaces mémoire (DDR/HBM) ;
  • formé par le chaînage de fonctions primitives L1 avec certains modules Data Mover ;
  • peut être appelé par l'hôte.

Fonctions API software L3

  • Principalement fournies pour les ingénieurs software purs ;
  • les paramètres de fonction sont indépendants du hardware ;
  • normalement utilisées pour le déploiement ;
  • peut être appelé par l'hôte.

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
AMD Vitis Graph Library Directories Diagram

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.

Ressources