Il progetto Vortex 3.0, che sviluppa una GPGPU open-source basata sull'architettura del set di istruzioni RISC-V e progettata per il calcolo parallelo utilizzando l'API OpenCL e il modello di esecuzione SIMT (Single Instruction, Multiple Threads), Γ¨ ora disponibile. Il progetto puΓ² essere utilizzato anche per la ricerca sulla grafica 3D e per lo sviluppo di nuove architetture GPU. Gli schemi, le descrizioni dei blocchi hardware in Verilog, il simulatore, i driver e la relativa documentazione di progettazione sono distribuiti con licenza Apache 2.0.
GPGPU si basa sull'architettura ISA RISC-V standard, estesa con istruzioni aggiuntive per supportare le funzionalitΓ GPU e la gestione dei thread. Le modifiche all'architettura del set di istruzioni RISC-V sono ridotte al minimo e, ove possibile, vengono utilizzate le istruzioni vettoriali esistenti. Le istruzioni aggiuntive includono: "tex" per accelerare l'elaborazione delle texture; vx_rast per il controllo della rasterizzazione; vx_rop per l'elaborazione di frammenti, profonditΓ e trasparenza; vx_imadd per le operazioni di moltiplicazione e somma; vx_wspawn, vx_split, vx_join, vx_tmc e vx_bar per attivare gruppi di thread (wavefront) eseguiti in parallelo dal motore SIMD.

La GPGPU in fase di sviluppo supporta le architetture del set di istruzioni RISC-V RV32IMF e RV64IMAFD a 32 e 64 bit e puΓ² includere memoria condivisa opzionale, cache L1, L2 e L3, nonchΓ© un numero configurabile di core, warp e thread. Ogni core puΓ² inoltre includere un numero configurabile di ALU, FPU, LSU e SFU. Per la prototipazione Γ¨ possibile utilizzare FPGA Xilinx e Altera, mentre per la simulazione del chip si possono impiegare Verilator (simulatore Verilog), RTLSIM (simulazione RTL) e SimX (simulazione software).
Per lo sviluppo di applicazioni, viene offerto un toolkit che include versioni adattate a Vortex di PoCL (compilatore e runtime OpenCL), LLVM/Clang, GCC e Binutils. Il progetto supporta la specifica OpenCL 1.2 e implementa il supporto per la rappresentazione intermedia SPIR-V degli shader tramite la traduzione in OpenCL.
Le modifiche introdotte in Vortex 3.0 includono:
- Γ stato aggiunto uno stack grafico hardware, che include blocchi per la rasterizzazione, la mappatura delle texture e la fusione dell'output (OM). Γ stato sviluppato un driver Vulkan, vortexpipe, per Mesa, basato sullo stack grafico implementato e sul rasterizzatore software lavapipe.
- Le funzionalitΓ del Tensor Core, progettato per accelerare l'esecuzione dei modelli di machine learning, sono state ampliate, implementando il supporto per la sparsitΓ strutturata per la compressione delle matrici di peso.
- L'operazione WGMMA (moltiplicazione di matrici a livello di warpgroup) Γ¨ stata implementata per la moltiplicazione di matrici in modalitΓ asincrona.
- Γ stato aggiunto il motore DXA (Data Transfer Acceleration) per velocizzare il trasferimento dei dati dalla memoria globale alla memoria locale.
- Γ stata implementata una nuova architettura basata su un processore di comandi (CP) e uno scheduler hardware dei core di calcolo (KMU - Kernel Management Unit), che consente l'assegnazione dei thread di calcolo al chip.
- Viene proposta una nuova libreria runtime che opera in modalitΓ non bloccante e fornisce astrazioni che si traducono in comandi hardware eseguiti in modo asincrono. Sono supportate code, eventi, moduli e sincronizzazione basata su barriere asincrone con semantica arrive/wait/event.
- Aggiunto il supporto per le istruzioni abbreviate RISC-V (RVC).
- Γ stato implementato il supporto hardware per le operazioni atomiche (Hardware Atomics).
- L'unitΓ FPU Γ¨ stata completamente riprogettata e sono stati introdotti nuovi blocchi moltiplicatori (Wallace-tree, Folded-radix) e sommatori (Kogge-Stone).
- Γ stato aggiunto uno stack di memoria virtuale basato sull'unitΓ di gestione della memoria (MMU) con supporto per l'architettura di indirizzamento virtuale SV32 a 32 bit.
- Supporto per l'estensione RISC-V Zicond con implementazione di operazioni condizionali.
- Clock gating integrato.
- Il supporto per il linguaggio HIP (Heterogeneous Interface for Portability) Γ¨ stato implementato tramite il framework chipStar, che traduce HIP in SPIR-V.
- Γ stata garantita la piena integrazione con il simulatore GEM5 ed Γ¨ stato aggiunto il supporto per il simulatore SimX sull'architettura TLM (Transaction-Level Modeling).
- Aggiunto il supporto per i toolkit Synopsys e Yosys per la sintesi logica per la produzione di chip, nonchΓ© il supporto per l'utilizzo delle librerie di elementi standard ASAP7 (7 nm), SAED14 (14 nm) e NanGate (15 nm).
- La toolchain di riferimento Γ¨ stata aggiornata a LLVM 20 e POCL 7.0.
Fonte: opennet.ru
