Vortex 2.2 projekti väljaanne, mis arendab avatud GPGPU-d RISC-V käsu kogumi arhitektuuri põhjal, on avalikustatud. See on kavandatud paralleelsete arvutuste teostamiseks OpenCL API ja SIMT (Single Instruction, Multiple Threads) täitmisrežiimi abil. Projekti saab kasutada ka 3D-graafika uurimiste läbiviimiseks ja uute GPU arhitektuuride arendamiseks. Verilogi keeles on saadaval skeemid, käsitsi kirjutatud kirjeldused, simulaator, draiverid ja muud projektiga seotud dokumendid, mis on litsentsitud Apache 2.0 alusel.
GPGPU aluseks on RISC-V tüüpi ISA, mida on laiendatud mõne täiendava käsklusega, mis on vajalikud GPU funktsioonide ja voogude juhtimise toetamiseks. Architektuuri käskude komplekti muudatused on minimaalsetes piirides ning kasutatakse võimalikult palju juba olemasolevaid vektorikäske. Täiendavatest käsklustest võib välja tuua: „tex“, mis kiirendab tekstuuride töötlemist, vx_rast, mis juhib rasteriseerimist, vx_rop, mis tegeleb fragmentide, sügavuse ja läbipaistvusega, vx_imadd, mis teostab „korrutada ja liita“ operatsiooni, samuti vx_wspawn, vx_tmc ja vx_bar, mis aktiveerivad käsu vood ja nende voogudes (wavefront, samaaegselt täituvad niidid SIMD mootoris), vx_split ja vx_join.

Arendatav GPGPU toetab 32- ja 64-bitiseid RISC-V RV32IMF ja RV64IMAFD käskluste komplekte ning võib sisaldada valikulist jagatud mälu, L1, L2 ja L3 taseme vahemälusid ning kohandatavat tuumade, tööplokkide (warps) ja niitide arvu. Iga tuuma jaoks on võimalik lubada kohandatavat arvu ALU, FPU, LSU ja SFU komponente. Prototüüpide loomiseks saab kasutada FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 ja Xilinx Versal VCK5000. Kiibi töö simuleerimiseks võivad kasutada Verilatorit (Verilog simulaator), RTLSIMi (RTL simulatsioon) ja SimX-i (tarkvaraline simulatsioon).
Rakenduste arendamiseks on saadaval tööriistakomplekt, mis sisaldab Vortexile kohandatud PoCL variante (OpenCL kompilaator ja tööaeg), LLVM/Clang, GCC ja Binutils. Projekt toetab OpenCL 1.2 spetsifikatsiooni ning vahepealse esitluse šejderite SPIR-V toetamine on realiseeritud OpenCL-i kaudu. Vortexi tehnoloogiate graafika jaoks arendatakse avatud GPU Skybox, mis toetab graafilist API-d Vulkan. Skyboxi prototüüp, mis on loodud FPGA Altera Stratix 10 baasil ja sisaldab 32 tuuma (512 voolu), saavutas 230 MHz sagedusel 3,7 gigapikslise sekundi täitmisvõime (29,4 gigatransaktsiooni sekundis).
Vortex versioonis 2.2 toimunud muudatused:
- Lisatud API vx_spawn_taskgroups, et käivitada tuumad, mis toetavad 3D-ülesannete segmentaalset täitmist.
- Lisatud ZICOND toele, RISC-V käsu komplekti arhitektuuri laiendus, mis võimaldab tingimuslike operatsioonide täitmist ilma harudeta.
- OpenCL kompilaator on viidud üle eraldi voogude (thread-level) täitmise ajakavale, kus iga voog täidab oma ülesannet sõltumatult teistest voogudest, mitte ülesande rühmade (warp-level) põhjal nagu varem.
- OpenCL-is on lisatud JIT-kompilaatori ja 64-bitiste tuumade tugi.
- Rakendatud on Vortex runtime dünaamilise laadimise tugi.
- Esitatud on uus dokumentatsioon FPGA Xilinx seadistamiseks.
- Lisatud on loogika sünteesi testimine Yosys tööriistade abil.
- Hierarhilistes flush operatsioonides ja write-back režiimis on tagatud vahemälu tugi.
- Optimeeritud on scoreboard-verifitseerimise ja registriülekande (RTL, Register Transfer Level) operatsioonide kiirus.
- Lisatud on DRAM-mälu simulaatori Ramulator 2.0 tugi.
- Ülemineku on tehtud uutele versioonidele Verilator 5.0 (SystemVerilog simulaator) ja LLVM 18.0, ning CentOS 7.9 põhine tööriistakomplekt on ajakohastatud.
- Travis CI pideva integreerimise süsteemi asemel on kasutusele võetud GitHub CI teenus.
Allikas: opennet.ru
