Actualités
Actualités
CUDA a été transplanté et le GPU basé sur risc-v joue ?
2022-03-17 459

RISC-V a été l'un des sujets les plus brûlants en informatique car cette architecture de jeu d'instructions (ISA) permet une personnalisation étendue et est facile à comprendre, en plus de l'ensemble des avantages open source et sans licence. Il existe même un projet visant à concevoir un GPU à usage général basé sur le RISC-V ISA, et nous assistons désormais au portage de la bibliothèque logicielle CUDA de Nvidia vers la plate-forme GPGPU Vortex RISC-V.


La CUDA (Computing Unified Device Architecture) de Nvidia représente une plate-forme informatique et une interface de programmation d'applications (API) uniques qui fonctionnent sur la gamme de cartes graphiques de Nvidia. Lorsqu'une application est écrite pour le support CUDA, dès que le système découvre un GPU basé sur CUDA, il obtient une grande accélération GPU du code.


Aujourd'hui, les chercheurs ont étudié un moyen d'activer la prise en charge de la boîte à outils logicielle CUDA sur un projet RISC-V GPGPU appelé Vortex. Le GPGPU Vortex RISC-V est conçu pour fournir un GPU RISC-V à l'échelle du système basé sur l'ISA RV32IMF. Cela signifie que les cœurs 32 bits peuvent passer de conceptions GPU à 1 cœur à 32 cœurs. Il prend en charge l'API graphique OpenCL 1.2 et, aujourd'hui, il prend également en charge certaines opérations CUDA.


Les chercheurs expliquent : « ... Dans ce projet, nous proposons et construisons un pipeline pour prendre en charge la migration CUDA de bout en bout : le pipeline accepte le code source CUDA en entrée et l'exécute sur l'architecture GPU RISC-V étendue. Le pipeline comprend plusieurs étapes : traduire le code source CUDA en NVVM IR, convertir NVVM IR en SPIR-V IR, transmettre SPIR-V IR à POCL pour obtenir le binaire RISC-V et enfin exécuter sur une architecture de fichier binaire GPU RISC-V étendue. "



Le processus est visualisé dans l'image ci-dessus, montrant toutes les étapes pour le faire fonctionner. En termes simples, le code source de CUDA est représenté dans un format de représentation intermédiaire (IR) appelé NVVM IR, basé sur le LLVM IR open source. Il a ensuite été converti en IR SPIR-V (Standard Portable Intermediate Representation), qui a ensuite été transmis en une implémentation open source portable de la norme OpenCL, appelée POCL. Étant donné que Vortex prend en charge OpenCL, il fournit du code pris en charge et peut l'exécuter sans problème.


Pour plus de détails sur ce processus complexe, cliquez ci-dessous pour lire l’article original. Il est important de remercier ces chercheurs pour leurs efforts visant à faire fonctionner CUDA sur des GPGPU RISC-V. Bien qu'il ne s'agisse que d'un petit pas pour l'instant, cela pourrait être le début d'une ère où RISC-V est utilisé pour accélérer les applications informatiques, un peu comme la gamme de GPU de Nvidia aujourd'hui.


Lecture approfondie : RISC-V peut-il changer le GPU ?


RISC-V peut-il gérer les transactions GPU ? Il s'agit d'un travail en cours qui peut être réalisé en créant une conception efficace sur une petite zone avec une programmabilité et une évolutivité personnalisées.  
  Quiconque a étudié l'architecture GPU sait qu'il s'agit de la construction SIMD d'un processeur vectoriel. Il s'agit d'un processeur parallèle ultra-efficace qui a été utilisé pour tout, depuis l'exécution de simulations et de jeux géniaux jusqu'à l'enseignement aux robots comment obtenir l'IA et pour aider les personnes intelligentes à manipuler le marché boursier. Il vérifie même ma grammaire pendant que j'écris ceci.  
  Mais le domaine du GPU est devenu un domaine privé, et son travail interne est effectué par l'IP et efficaces Les fournisseurs de développeurs tels qu'AMD, Intel et Nvidia. Et s'il existait un nouvel ensemble d'instructions graphiques conçues pour le traitement des images et des médias 3D ? Eh bien, c'est possible.  
  Les nouvelles instructions sont construites sur le jeu d’instructions vectorielles de base RISC-V. Ils ajouteront la prise en charge de nouveaux types de données spécifiques aux graphes en tant qu'extensions en couches dans l'esprit du noyau RISC-V ISA. Prend en charge les opérations vectorielles, mathématiques préalables, pixels et textures, ainsi que les opérations de tampon Z/Frame. Il pourrait s'agir d'un ISA CPU-GPU fusionné. Le groupe bibliothèque - RISC 3D l'appelle RV64X (Figure 1) car les instructions auront une longueur de 64 bits (32 bits ne suffiront pas pour prendre en charge un ISA robuste).  
 

Figure 1. Le processeur graphique RV64X comprend plusieurs DSP en plus des unités de texture et des blocs fonctionnels dédiés.
 
  Le groupe a déclaré que sa motivation et son objectif étaient de créer une conception petite et efficace avec une programmabilité et une extensibilité personnalisées. Il devrait permettre la propriété et le développement de la propriété intellectuelle à faible coût, et non concurrencer les produits commerciaux. Il peut être implémenté sur des cibles FPGA et ASIC et est gratuit et open source. La conception originale cible les microcontrôleurs basse consommation qui seront compatibles Khronos Vulkan et prendront en charge d'autres API (OpenGL, DirectX, etc.).  
               

GPU + RISC-V


Le matériel cible aura une unité fonctionnelle GPU et un cœur RISC-V. Cette combinaison se présente sous la forme de processeurs où les instructions 64 bits sont codées sous forme d'instructions scalaires. Le fait est que le compilateur générera des instructions SIMD à partir d'opcodes scalaires préfixés. Les autres fonctionnalités incluent des problèmes mutables, un backend SIMD basé sur des prédicats ; suivi des succursales ; des exceptions précises ; et une interface vectorielle. Les conceptions incluront une version 16 bits à virgule fixe et une version 32 bits à virgule flottante. Le premier convient à la mise en œuvre de FPGA.  
  L'équipe a déclaré : « Il n'est pas nécessaire d'utiliser le mécanisme d'appel RPC/IPC pour envoyer des appels d'API 3D vers l'espace mémoire CPU inutilisé ou l'espace mémoire CPU inutilisé vers l'espace mémoire GPU et vice versa. »  
  L'avantage de l'approche ISA CPU-GPU « fusionnée » est que des pipelines graphiques standard peuvent être utilisés dans le microcode et que des shaders personnalisés peuvent être pris en charge. Peut même inclure des extensions de lancer de rayons.  
  Le design sera au format Vblock (issu d'un effort Libre GPU) :  
 
  • C'est un peu comme VLIW (mais pas vraiment).
  • Les blocs d'instructions sont précédés de marqueurs de registre qui fournissent un contexte supplémentaire pour les instructions scalaires au sein de ce bloc.
  • Les sous-blocs incluent la longueur du vecteur, la rotation, la superposition vecteur/largeur et la prédiction.
  • Tout cela est ajouté aux opcodes scalaires !
  • Il n'y a pas d'opcodes vectoriels (ni besoin d'en avoir).
  • Dans un contexte vectoriel, cela se passe comme ceci : si un opcode scalaire utilise un registre et que ce registre est répertorié dans le contexte vectoriel, alors le mode vectoriel sera activé.
  • L'activation amène la boucle for au niveau matériel à émettre plusieurs opérations scalaires consécutives (au lieu d'une seule).
  • Les implémenteurs sont libres d'implémenter les boucles comme ils le souhaitent : SIMD, multi-problèmes, exécution unique ; à peu près n'importe quoi.

  Le vecteur RV32-V gère les opérations vectorielles 8 bits, 16 bits ou 32 bits/élément de 2 à 4 éléments. Il y aura également des instructions dédiées au pipeline général de rendu graphique 3D pour les points XYZW à virgule fixe et flottante de 64 bits et 128 bits. Pixels RVBA 8, 16, 24 et 32 ​​bits ; Texels UVW 8 bits et 16 bits par composant ; et les paramètres de lumière et de matériaux (Ia, ka, Id, kd, Is, ks, etc.).  
  Le vecteur d'attributs est représenté sous la forme d'une matrice 4×4. Le système prendra nativement en charge les matrices 2×2 et 3×3. La prise en charge des vecteurs peut également convenir aux simulations numériques utilisant des types de données entiers de 8 bits courants dans les applications d'IA et d'apprentissage automatique.  
  Des rastériseurs personnalisés tels que des splines, des surfaces SubDiv et des correctifs peuvent être inclus dans la conception. Cette méthode permet également l'inclusion d'étapes de pipeline personnalisées, d'étapes de géométrie/pixel/framebuffer personnalisées, de subdivisions personnalisées et d'opérations d'instanciation personnalisées.  
             

RV64X


L'implémentation de référence RV64X comprend :
 
 
  • Cache SRAM d'instructions/données (32 Ko)

  • Microcode SRAM (8 Ko)

  • Décodeur d'instructions à double fonction (câblé pour RV32V et X ; décodeur d'instructions microcodées pour ISA personnalisé)

  • ALU à quatre vecteurs (32 bits/ALU-fixe/flottant)

  • Fichier de registre 136 bits (1 XNUMX éléments)

  • unité de fonction spéciale

  • unité de texture

  • Framebuffer local configurable


  RV64X est une architecture évolutive (Figure 2). Sa méthode de fusion est nouvelle, tout comme l'utilisation de registres configurables pour les types de données personnalisés. Le microcode basé sur SRAM défini par l'utilisateur peut être utilisé pour implémenter des extensions telles que des étapes de rastérisation personnalisées, le traçage de rayons, la vision industrielle et l'apprentissage automatique. Une conception unique peut être appliquée à un microcontrôleur graphique autonome ou à une solution multicœur avec des unités de shader évolutives.  
 

Figure 2. Le RV64X peut évoluer d'une simple conception bas de gamme (à gauche) à une solution multicœur (à droite).  
  Les extensions graphiques de RISC-V abordent l'évolutivité et le multilinguisme. Cela permet des cas d’utilisation de plus haut niveau qui conduisent à davantage d’innovation.  
             

et après


La spécification RV64X en est encore à ses débuts et est susceptible de changer. Un forum de discussion est en cours de création. L'objectif immédiat est de créer un exemple d'implémentation à l'aide du simulateur de jeu d'instructions. Cela ouvrira les implémentations usingSource IP et FPGA d'IP personnalisées conçues comme des projets open source.





Avertissement : cet article est reproduit à partir de "Semiconductor Industry Observation". Cet article ne représente que l'opinion personnelle de l'auteur, pas l'opinion de Sac Micro et de l'industrie, uniquement pour la réimpression et le partage, le support Pour protéger les droits de propriété intellectuelle, veuillez indiquer la source originale et l'auteur pour la réimpression. En cas d'infraction, veuillez nous contacter pour la supprimer.

whatsapp

Ligne d'assistance

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950