Pubblicato Vortex 3.0, GPGPU open source basato su architettura RISC-V

È disponibile il rilascio del progetto Vortex 3.0, che sviluppa un GPGPU open source basato sull'architettura del set di istruzioni RISC-V, progettato per eseguire calcoli paralleli utilizzando l'API OpenCL e il modello di esecuzione SIMT (Single Instruction, Multiple Threads). Il progetto può essere utilizzato anche per la ricerca nel campo della grafica 3D e nello sviluppo di nuove architetture GPU. Gli schemi, le descrizioni dei blocchi hardware in linguaggio Verilog, il simulatore, i driver e la documentazione di progetto correlata sono distribuiti sotto licenza Apache 2.0.

La base del GPGPU è costituita dall'ISA RISC-V standard, estesa con ulteriori istruzioni per supportare le funzionalità della GPU e la gestione dei thread. Le modifiche all'architettura del set di istruzioni RISC-V sono minimizzate e vengono utilizzate, quando possibile, le istruzioni vettoriali già esistenti. Tra le istruzioni aggiuntive: "tex" per accelerare l'elaborazione delle texture; vx_rast per la gestione della rasterizzazione, vx_rop per l'elaborazione dei frammenti, della profondità e della trasparenza; vx_imadd per eseguire l'operazione di "moltiplicare e sommare"; vx_wspawn, vx_split, vx_join, vx_tmc e vx_bar per attivare gruppi di thread (wavefront) eseguiti in parallelo dal SIMD Engine.

Il GPGPU in fase di sviluppo supporta architetture a 32 e 64 bit del set di istruzioni RISC-V RV32IMF e RV64IMAFD, e può includere memoria condivisa opzionale, cache di livelli L1, L2 e L3, oltre a un numero configurabile di core, blocchi di attività (warps) e thread. Inoltre, per ogni core è prevista la possibilità di abilitare un numero configurabile di ALU, FPU, LSU e SFU. Per la creazione di prototipi possono essere utilizzati FPGA di Xilinx e Altera, mentre per la simulazione del funzionamento del chip si impiega Verilator (simulatore Verilog), RTLSIM (simulazione RTL) e SimX (simulazione software).

Per lo sviluppo di applicazioni, è disponibile un toolkit che include versioni di PoCL (compilatore e runtime OpenCL) adattate per lavorare con Vortex, oltre a LLVM/Clang, GCC e Binutils. Il progetto supporta la specifica OpenCL 1.2 e, tramite la traduzione in OpenCL, offre supporto per la rappresentazione intermedia degli shader SPIR-V.

Tra le novità in Vortex 3.0:

  • È stato aggiunto uno stack grafico hardware che include blocchi per la rasterizzazione, il layering delle texture e la fusione dell'output (OM — Output Merger). Per Mesa, basato sullo stack grafico implementato e sul rasterizzatore software lavapipe, è stato preparato un driver Vulkan vortexpipe.
  • Le funzionalità del cuore tensoriale, progettato per accelerare l'esecuzione dei modelli di machine learning, sono state ampliate con il supporto per la sparsità strutturale (structured sparsity) al fine di comprimere le matrici dei pesi.
  • È stata implementata l'operazione WGMMA (moltiplicazione di matrici a livello di gruppo warp) per la moltiplicazione delle matrici in modo asincrono.
  • È stato aggiunto il motore DXA (Data Transfer Acceleration) per accelerare il trasferimento di dati dalla memoria globale alla memoria locale.
  • È stata implementata una nuova architettura basata su un processore di comandi (CP, Command Processor) e un gestore hardware dei nuclei di calcolo (KMU — Kernel Management Unit), che consente di trasferire al chip le operazioni di gestione dei flussi di calcolo.
  • È stata proposta una nuova libreria runtime che opera in modalità non bloccante e fornisce astrazioni tradotte in comandi hardware eseguiti in modo asincrono. Supporta code, eventi, moduli e sincronizzazione basata su barriere asincrone con semantica arrive/wait/event.
  • Aggiunta la supporto per le istruzioni abbreviate RISC-V (RVC).
  • Implementato il supporto hardware per operazioni atomiche (Hardware Atomics).
  • Completamente riprogettato l'FPU e proposti nuovi blocchi moltiplicatori (Wallace-tree, Folded-radix) e sommatori (Kogge-Stone).
  • Aggiunto uno stack di memoria virtuale basato su un'unità di gestione della memoria (MMU) con supporto per un'architettura di indirizzamento virtuale a 32 bit SV32.
  • Supporto per l'estensione RISC-V Zicond con implementazione delle operazioni condizionali.
  • Integrata la gestione del clock (clock gating).
  • Implementato il supporto per il linguaggio HIP (Heterogeneous Interface for Portability) attraverso il framework chipStar, che traduce HIP in SPIR-V.
  • È stata garantita un'integrazione completa con il simulatore GEM5 e aggiunta la compatibilità con il simulatore SimX basato sull'architettura TLM (Transaction-Level Modeling).
  • È stata aggiunta la supporto per gli strumenti Synopsys e Yosys per la sintesi logica dei chip, insieme alla compatibilità con le librerie di elementi standard ASAP7 (7nm), SAED14 (14nm) e NanGate (15nm).
  • Il toolkit di riferimento è stato aggiornato a LLVM 20 e POCL 7.0.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster