- Présentation
- Introduction
Dispositions
La bibliothèque AMD Vitis™ BLAS offre :
- Une mise en œuvre rapide accélérée par FPGA des sous-routines standard d'algèbre linéaire (BLAS)
- Des interfaces software de haut niveau écrites en C, C++ et Python 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
La bibliothèque Vitis BLAS comprend les fonctions de fonctionnement de matrice et de vecteur suivantes :
Fonctions pour les opérations de matrice :
- Multiplication de matrice générale
Fonctions pour les opérations vectorielles :
- Rechercher la position de l'élément vectoriel
- Accumuler la magnitude des éléments vectoriels
- Calculer le produit scalaire de deux vecteurs
- Calculer un produit vectoriel-scalaire
- Calculer la norme euclidienne d'un vecteur
- Échange, Échelle, Copie des vecteurs
Fonctions pour les opérations matrice-vecteur :
- Multiplication matrice-vecteur générale
- Multiplication matrice-vecteur générale par bandes
- Matrice symétrique et multiplication vectorielle
- Matrice triangulaire et multiplication vectorielle
Types d'implémentation de fonction
La bibliothèque Vitis BLAS fournit trois types de mises en œuvre 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, C++ et Python pour permettre aux développeurs software purs de décharger les opérations de BLAS vers 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 BLAS ne fournit actuellement aucune fonction s'exécutant sur Versal AI Engine.
Fonctions de la bibliothèque Vitis BLAS | Fonctions primitives L1 |
---|---|
amax, amin : position de l'élément de vecteur de recherche | |
asum : accumule l'amplitude des éléments vectoriels | |
dot : calcule le produit de point de deux vecteurs | |
axpy : calcule un produit vectoriel-scalaire et l'ajoute au vecteur | |
nrm2 : calcule la norme euclidienne d'un vecteur | |
swap, scal, copy : permute, met à l'échelle ou copie les vecteurs | |
symv : matrice symétrique et multiplication vectorielle | |
trmv : matrice triangulaire et multiplication vectorielle | |
Fonctions du noyau L2 | |
Gemm class : multiplication de matrice générale | |
Gemv class : multiplication matrice-vecteur générale | |
Fonctions API du software L3 | |
xfblasCreate : initialise la bibliothèque et crée un descripteur | |
xfblasFree : libère de la mémoire dans l'appareil FPGA | |
xfblasGetMatrix : copie une matrice dans la mémoire de l'appareil FPGA vers l'hôte | |
xfblasExecute : démarre le noyau et attend qu'il ait terminé | |
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
La bibliothèque Vitis BLAS fournit trois types de mises en œuvre 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, C++ et Python pour permettre aux développeurs software purs de décharger les opérations de BLAS vers 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 BLAS ne fournit actuellement aucune fonction s'exécutant sur Versal AI Engine.
Pour les sous-répertoires L1 :
- include/hw : les fichiers d'en-tête pour les fonctions primitives
- tests/hw : les modules supérieurs, y compris les mouvements de données et les fonctions primitives
- tests/sw : le banc d'essai et prise en charge de l'infrastructure pour l'appel de fonctions primitives
Pour les sous-répertoires L2 :
- include/hw : les fichiers d'en-tête pour les fonctions du noyau
- include/sw : les modules hôtes pour appeler les fonctions du noyau
- tests/hw : contient les Makefiles utilisés pour construire chaque fonction de noyau mise en œuvre
Pour les sous-répertoires L3 :
- include/sw : fichiers d'en-tête pour les fonctions API software
- tests/sw : contient les Makefiles utilisés pour tester chaque fonction API software mise en œuvre

Exécution dans la IDE (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.