A fost publicată o nouă ediție a proiectului Vortex, care dezvoltă GPGPU deschis bazat pe arhitectura setului de instrucțiuni RISC-V, destinat realizării de calcule paralele folosind API OpenCL și modelul de execuție SIMT (Single Instruction, Multiple Threads). Proiectul poate fi, de asemenea, utilizat în cercetări în domeniul graficii 3D și în dezvoltarea unor noi arhitecturi GPU. Schemele, descrierile blocurilor hardware în limbajul Verilog, simulatoarele, driverele și documentația proiectului sunt distribuite sub licența Apache 2.0.
Baza GPGPU o constituie ISA RISC-V standard, extins cu unele instrucțiuni suplimentare necesare pentru susținerea funcțiilor GPU și gestionarea fluxurilor. Modificările în arhitectura setului de instrucțiuni RISC-V sunt minimizate, iar acolo unde este posibil sunt utilizate deja instrucțiunile vectoriale existente. O abordare similară este aplicată în proiectul RV64X, care dezvoltă, de asemenea, un GPU deschis pe baza tehnologiilor RISC-V.

Caracteristicile principale ale Vortex:
- Suport pentru arhitecturi RISC-V de 32 și 64 de biți RV32IMF și RV64IMAFD.
- Număr configurabil de nuclei, blocuri de sarcini (warps) și fire.
- Număr configurabil de ALU, FPU, LSU și SFU pentru fiecare nucleu.
- Lățime de emisie a canalului (pipeline issue width) configurabilă.
- Memorie opțională partajată și cache-uri de niveluri L1, L2 și L3.
- Suport pentru specificația OpenCL 1.2.
- Posibilitatea implementării pe bază de FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 și Xilinx Versal VCK5000.
- Instrucțiuni extinse: „tex” pentru accelerarea procesării texturilor, vx_rast pentru gestionarea rasterizării, vx_rop pentru procesarea fragmentelor, adâncimii și transparenței, vx_imadd pentru realizarea operației „înmulțire și adunare”, vx_wspawn, vx_tmc și vx_bar pentru activarea fronturilor de instrucțiuni și a firelor din acestea (wavefront, set de fire, executate simultan SIMD Engine), vx_split și vx_join.
- Suportul pentru reprezentarea intermediară a shaderelor SPIR-V este realizat prin translație în OpenCL.
- Pentru dezvoltarea aplicațiilor, se oferă un instrumentar care include variante adaptate pentru a lucra cu Vortex, precum PoCL (compilator și runtime OpenCL), LLVM/Clang, GCC și Binutils.
- Este suportată simularea funcționării cipului folosind Verilator (simulator Verilog), RTLSIM (simularea RTL) și SimX (simulare software).
Pentru grafică, tehnologiile Vortex dezvoltă GPU-ul deschis Skybox, care suportă API-ul grafic Vulkan. Prototipul Skybox, creat pe baza FPGA Altera Stratix 10 și incluzând 32 de nuclee (512 fire de execuție), a permis, la o frecvență de 230 MHz, obținerea unei performanțe de umplere de 3.7 gigapixeli pe secundă (29.4 gigatranzacții pe secundă). Se remarcă faptul că acesta este primul GPU deschis cu implementare software și hardware, care suportă Vulkan.
Printre modificările din versiunea Vortex 2.1:
- A fost adăugat API-ul spawn_taskgroups pentru a lansa nuclee care folosesc memorie locală și care suportă stabilirea barierelor pe memorie.
- A fost propusă o nouă extensie pentru crearea nucleelor binare relocabile.
- În API-ul de management al memoriei, au fost adăugate apeluri vx_mem_reserve, vx_mem_access și vx_mem_address.
- A fost adăugat un nou API runtime vx_check_occupancy.
- În driverul pentru GPU a fost adăugată o opțiune pentru verificarea testelor OpenCL pe GPU-ul local.
- Au fost adăugate teste OpenCL care folosesc memorie locală (psum, sgemm2, sgemm3).
- Au fost adăugate versiuni adaptate special pentru Vortex ale bibliotecilor libc și librt.
- A fost adăugată suport pentru îmbinarea blocurilor de memorie liberă adiacente (memory coalescing).
- Au fost efectuate optimizări ale microarhitecturii.
- A fost adăugat un nou script de compilare care separă fișierele sursă de directorul de compilare.
Sursa: opennet.ro
