Vortex 2.1 a été publié, un GPGPU open source basé sur l'architecture RISC-V

Une nouvelle version du projet Vortex a été publiée, développant un GPGPU basé sur l'architecture du jeu d'instructions RISC-V, conçu pour exécuter des calculs parallèles en utilisant l'API OpenCL et le modèle d'exécution SIMT (Single Instruction, Multiple Threads). Le projet peut également être utilisé pour des recherches dans le domaine de la 3D graphique et pour le développement de nouvelles architectures GPU. Les schémas, descriptions des blocs matériels en Verilog, simulateur, pilotes et documentation projet accompagnante sont distribués sous la licence Apache 2.0.

Le GPGPU repose sur un ISA RISC-V standard, enrichi de certaines instructions supplémentaires nécessaires pour le support des fonctions GPU et la gestion des flux. Les modifications de l'architecture du jeu d'instructions RISC-V sont minimisées et utilisent autant que possible les instructions vectorielles existantes. Une approche similaire est appliquée dans le projet RV64X, qui développe également un GPU ouvert basé sur les technologies RISC-V.

Vortex 2.1 a été publié, un GPGPU open source basé sur l'architecture RISC-V

Caractéristiques principales de Vortex :

  • Support des architectures de jeu d'instructions RISC-V 32 et 64 bits, RV32IMF et RV64IMAFD.
  • Nombre de cœurs, de blocs de tâches (warps) et de threads réglable.
  • Nombre configurable d'ALU, de FPU, de LSU et de SFU pour chaque cœur.
  • Largeur de sortie de pipeline configurable.
  • Mémoire partagée et caches optionnels de niveaux L1, L2 et L3.
  • Support de la spécification OpenCL 1.2.
  • Possibilité d'implémentation sur FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 et Xilinx Versal VCK5000.
  • Instructions avancées : «tex» pour accélérer le traitement des textures, vx_rast pour la gestion du raster, vx_rop pour le traitement des fragments, de la profondeur et de la transparence, vx_imadd pour exécuter l'opération «multiplier et additionner», vx_wspawn, vx_tmc et vx_bar pour activer les fronts d'instructions et les threads associés (wavefront, ensemble de threads exécutés simultanément par SIMD Engine), vx_split et vx_join.
  • Le support de la représentation intermédiaire des shaders SPIR-V est réalisé via la traduction en OpenCL.
  • Pour le développement d'applications, un ensemble d'outils est proposé, incluant des variantes PoCL adaptées pour travailler avec Vortex (compilateur et runtime OpenCL), LLVM/Clang, GCC et Binutils.
  • La simulation du fonctionnement de la puce est supportée à l'aide de Verilator (simulateur Verilog), RTLSIM (simulation RTL) et SimX (simulation logicielle).

Pour les graphiques basés sur la technologie Vortex, un GPU Skybox ouvert est en cours de développement, prenant en charge l'API graphique Vulkan. Le prototype Skybox, construit sur une base FPGA Altera Stratix 10 et intégrant 32 cœurs (512 threads), a permis d'atteindre une performance de remplissage de 3,7 gigapixels par seconde (29,4 gigatransactions par seconde) à une fréquence de 230 MHz. Il est à noter qu'il s'agit du premier GPU ouvert avec une mise en œuvre matérielle et logicielle prenant en charge Vulkan.

Parmi les changements dans la version Vortex 2.1 :

  • Ajout de l'API spawn_taskgroups pour lancer des cœurs utilisant la mémoire locale et prenant en charge l'établissement de barrières mémoires.
  • Nouvelle extension proposée pour créer des cœurs binaires déplaçables (relocatable).
  • Des appels vx_mem_reserve, vx_mem_access et vx_mem_address ont été ajoutés à l'API de gestion de la mémoire.
  • Ajout d'une nouvelle API runtime vx_check_occupancy.
  • Une option a été ajoutée au pilote GPU pour vérifier les tests OpenCL sur le GPU local.
  • Ajout de tests OpenCL utilisant la mémoire locale (psum, sgemm2, sgemm3).
  • Des éditions de bibliothèques libc et librt spécialement adaptées pour Vortex ont été ajoutées.
  • Ajout de la prise en charge de la fusion des blocs de mémoire libres adjacents (memory coalescing).
  • Optimisation de l'architecture micro.
  • Ajout d'un nouveau script de compilation, séparant les fichiers sources du répertoire de compilation.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster