HPVM, un compilateur LLVM pour CPU, GPU, FPGA et accélérateurs matériels

Le projet récemment LLVM a annoncé la sortie de la nouvelle version du compilateur HPVM 2.0 (Machine Virtuelle Parallèle Hétérogène), dont le but est de simplifier la programmation des systèmes et fournir des outils pour générer du code pour les CPU, GPU, FPGA et accélérateurs matériels spécifiques à un domaine.

La programmation de systèmes parallèles hétérogènes est compliquée en raison de la présence dans un système de composants qui utilisent différents modèles pour réaliser le parallélisme (cœurs CPU, instructions vectorielles, GPU, etc.), différents jeux d'instructions et différentes hiérarchies de mémoire. Chaque système utilise sa propre combinaison de ces composants.

L'idée principale du projet HPVM est d'utiliser une représentation unifiée des programmes exécutables parallèles lors de la compilation, qui peut être utilisé pour divers types de matériel prenant en charge le calcul parallèle, y compris les GPU, les instructions vectorielles, les processeurs multicœurs, les FPGA et diverses puces d'accélération spécialisées.

Contrairement à d'autres systèmes, HPVM a essayé de combiner trois possibilités pour organiser l'informatique hétérogène : une représentation intermédiaire (IR), une architecture de jeu d'instructions virtuelles (V-ISA) et une programmation d'exécution, quels que soient le langage de programmation et le matériel.

La représentation intermédiaire HPVM étend la représentation intermédiaire des instructions LLVM en utilisant un graphe de flux de données hiérarchique pour capturer le parallélisme au niveau des tâches, des données et des pipelines de calcul. La représentation intermédiaire HPVM comprend également des instructions vectorielles et une mémoire partagée. L'objectif principal de l'utilisation d'une représentation intermédiaire est la génération de code efficace et l'optimisation pour les systèmes hétérogènes.

L'architecture de jeu d'instructions virtuelles (V-ISA) fait abstraction du matériel de bas niveau et unifie diverses formes de parallélisme et d'architectures de mémoire en utilisant uniquement le modèle de concurrence sous-jacent, le graphe de flux de données.

V-ISA permet la portabilité entre différents types de matériel pour le calcul parallèle et permet de ne pas perdre de performances lors de l'utilisation de différents éléments de systèmes hétérogènes. Virtual ISA peut également être utilisé pour fournir un code exécutable de programme générique pouvant être exécuté sur des CPU, des GPU, des FPGA et divers accélérateurs.

Las políticas de programación de procesos informáticos flexibles se aplican en tiempo de ejecución y se implementan sobre la base de información sobre el programa (estructura gráfica) y mediante la compilación de nodos de programas individuales para su ejecución en cualquiera de los dispositivos informáticos de destino disponibles dans le système.

Les générateurs de code développés par le projet sont capables de traduire les nœuds d'application définis par l'ISA virtuel pour s'exécuter sur les GPU NVIDIA (cuDNN et OpenCL), les instructions vectorielles Intel AVX, les FPGA et les processeurs x86 multicœurs. Il est à noter que les performances de sortie des traducteurs HPVM sont comparables au code OpenCL écrit à la main pour les GPU et les périphériques informatiques vectoriels.

Principales nouveautés de HPVM 2.0

Pour la partie des nouveautés présentées Dans cette nouvelle version, on distingue :

  • Le frontend en langage Hétéro-C++ est proposé, ce qui simplifie la parallélisation du code applicatif en langages C/C++ pour la compilation dans HPVM. Hetero-C++ définit des extensions pour le parallélisme au niveau des données et les tâches hiérarchiques qui correspondent aux graphiques de threads HPVM.
  • Un backend FPGA a été ajouté pour prendre en charge l'exécution de code sur un FPGA Intel. Pour orchestrer l'exécution, le SDK Intel FPGA pour OpenCL est utilisé.
  • Le cadre DSE (Design Space Exploration) a été ajouté, qui comprend des optimisations du compilateur et des mécanismes de détection des goulots d'étranglement pour régler automatiquement les applications pour une plate-forme matérielle donnée.
  • Le cadre contient un modèle de performance prêt à l'emploi pour les FPGA Intel et vous permet de connecter vos propres processeurs pour optimiser tout appareil compatible HPVM.
  • Les optimisations peuvent être appliquées à la fois au niveau du graphique de flux de données HPVM et au niveau LLVM.
  • Mise à jour des composants LLVM vers la version 13.0.
  • Le code a été réorganisé pour faciliter la navigation dans la base de code, les bibliothèques et les utilitaires.
  • L'infrastructure de test a été améliorée, de nouveaux tests ont été ajoutés pour divers composants HPVM.

Enfin, Si vous souhaitez en savoir plus sur HPVM, vous pouvez vérifier les détails dans le lien suivant.


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.