A liberazione di u prughjettu Vortex 2.2 hè stata publicata, sviluppendu una GPGPU aperta basata nantu à l'architettura di l'istruzzioni RISC-V, pensata per eseguisce l'informatica parallela utilizendu l'API OpenCL è u mudellu d'esekzione SIMT (Single Instruction, Multiple Threads). U prughjettu pò ancu esse usatu in a ricerca in u campu di gràfiche 3D è in u sviluppu di novi architetture GPU. Schemi, descrizioni di blocchi hardware in lingua Verilog, simulatore, drivers è documentazione di cuncepimentu accumpagnatu sò distribuiti sottu a licenza Apache 2.0.
U core di GPGPU hè un RISC-V ISA genericu, allargatu cù alcune struzzioni supplementari necessarii per sustene a funziunalità GPU è u cuntrollu di filu. À u listessu tempu, i cambiamenti in l'architettura di l'istruzzioni RISC-V sò mantinuti à u minimu è, sempre chì hè pussibule, i struzzioni vettoriali esistenti sò usati. Istruzzioni supplementari includenu: "tex" per accelerà a trasfurmazioni di texture, vx_rast per cuntrullà a rasterizazione, vx_rop per trattà i frammenti, a prufundità è a trasparenza, vx_imadd per fà multiplicà è aghjunghje operazioni, vx_wspawn, vx_tmc è vx_bar per attivà i bordi di l'istruzzioni è i fili in elli (wavefront). , un inseme di fili eseguiti in parallelu da u SIMD Engine), vx_split è vx_join.

A GPGPU in evoluzione supporta architetture di set di istruzioni RISC-V RV32IMF è RV64IMAFD a 32 è 64 bit, è pò include memoria spartuta opzionale, cache L1, L2 è L3, è un numeru configurabile di core, warps è threads. À u turnu, ogni core hà a capacità di include un numeru configurabile di ALU, FPU, LSU è SFU. I FPGA chì ponu esse utilizati per u prototipu sò Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 è Xilinx Versal VCK5000. Verilator (simulatore Verilog), RTLSIM (simulazione RTL) è SimX (simulazione software) ponu esse utilizati per simulà l'operazione di u chip.
Per u sviluppu di l'applicazioni, un toolkit hè offertu, cumprese varianti di PoCL (compiler è runtime OpenCL), LLVM / Clang, GCC è Binutils adattati per travaglià cù Vortex. U prughjettu sustene a specificazione OpenCL 1.2 è, per mezu di a traduzzione à OpenCL, sustene a rapprisintazioni intermedia di i shaders SPIR-V. Per i grafici basati nantu à e tecnulugia Vortex, a GPU Skybox aperta hè sviluppata, chì sustene l'API grafica Vulkan. U prototipu Skybox, creatu nantu à a basa di l'Altera Stratix 10 FPGA è chì includenu core 32 (512 fili), hà permessu di ottene un rendimentu di riempimentu di 230 gigapixels per seconda (3.7 gigatransactions per second) à una frequenza di 29.4 MHz.
Trà i cambiamenti in Vortex 2.2:
- Aggiuntu l'API vx_spawn_taskgroups per lancià i kernels chì supportanu l'esekzione segmentata di e attività 3D.
- Aggiuntu supportu per ZICOND, una estensione di l'architettura di l'istruzzioni RISC-V chì furnisce l'esekzione cundizionale di operazioni senza branching.
- U compilatore OpenCL hè statu cambiatu à a pianificazione di l'esekzione à u livellu di i fili individuali (livellu di filu, ogni filu realiza u so compitu indipindentamente di l'altri fili), piuttostu cà gruppi di compiti (livellu di deformazione), cum'è prima.
- OpenCL aghjunghjenu supportu per a compilazione JIT è kernels 64-bit.
- U supportu per a carica dinamica Vortex runtime hè stata implementata.
- A nova documentazione per a cunfigurazione di Xilinx FPGA hè stata pruposta.
- A prova di sintesi logica cù l'utili Yosys hè inclusa.
- U supportu di cache hè furnitu in operazioni di flush gerarchicu è in modu di scrittura.
- A velocità di a verificazione di u scoreboard è u travagliu cù l'operandi à u livellu di trasferimentu di registru (RTL, Livellu di trasferimentu di registru) hè stata ottimizzata.
- Supportu aghjuntu per u simulatore di memoria Ramulator 2.0 DRAM.
- A transizione à l'usu di e nove versioni di Verilator 5.0 (simulatore SystemVerilog) è LLVM 18.0 hè stata realizata, è u kit di strumenti basatu annantu à questu hè statu aggiornatu. CentOS 7.9.
- Invece di u sistema di integrazione continua Travis CI, u serviziu GitHub CI hè utilizatu.
Source: opennet.ru
