Megjelent a Vortex projekt új kiadása, amely a RISC-V utasításkészlet architektúrájára épülő nyílt GPGPU-t fejleszti, és párhuzamos számítások elvégzésére készült az OpenCL API és az SIMT (Single Instruction, Multiple Threads) végrehajtási modell felhasználásával. A projekt alkalmazható 3D grafikai kutatások során és új GPU architektúrák fejlesztésénél is. A Verilog nyelven írt hardware blokkok tervrajzai, leírásai, szimulátorok, illesztőprogramok és egyéb kapcsolódó projekt dokumentáció Apache 2.0 licenc alatt kerülnek kiadásra.
A GPGPU alapját a tipikus RISC-V ISA képezi, amelyet kiegészítő utasításokkal bővítettek, hogy támogassa a GPU funkcióit és a szálkezelést. A RISC-V utasításkészlet architektúrájában a változtatások minimalizálva lettek, és ahol lehetséges, a már meglévő vektoriális utasításokat használják. Hasonló megközelítést alkalmaz a RV64X projekt, amely szintén nyílt GPU-t fejleszt RISC-V technológiákra alapozva.

A Vortex főbb jellemzői:
- Támogatja a 32 és 64 bites RISC-V RV32IMF és RV64IMAFD utasításkészleteket.
- Szabályozható számú mag, feladatblokkok (warps) és szálak.
- Szabályozható ALU, FPU, LSU és SFU szám minden mag számára.
- Szabályozható pipeline végrehajtási szélesség.
- Opcionális megosztott memória és L1, L2 és L3 cache-ek.
- Támogatja az OpenCL 1.2 specifikációt.
- Lehetőség FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 és Xilinx Versal VCK5000 alapú megvalósításra.
- Kibővített utasítások: 'tex' a textúrák feldolgozásának felgyorsítására, vx_rast a raszterezés irányítására, vx_rop a fragmentek, mélység és átlátszóság feldolgozására, vx_imadd a ‘szorozni és hozzáadni’ művelet végrehajtására, vx_wspawn, vx_tmc és vx_bar az utasítások és szálak (wavefront, szálhalmaz, párhuzamosan végrehajtott SIMD Engine) frontjainak aktiválására, vx_split és vx_join.
- A SPIR-V shaderek köztes reprezentációjának támogatása OpenCL-be történő fordítással valósul meg.
- Alkalmazásfejlesztéshez eszközkészlet áll rendelkezésre, amely a Vortexhez illeszkedő PoCL (OpenCL fordító és runtime), LLVM/Clang, GCC és Binutils adaptált változatait tartalmazza.
- A chip működésének szimulálása Verilator (Verilog szimulátor), RTLSIM (RTL szimuláció) és SimX (szoftveres szimuláció) felhasználásával támogatott.
A Vortex technológiáján alapuló grafikai GPU Skybox nyílt fejlesztése zajlik, amely támogatja a Vulkan grafikai API-t. A Skybox prototípus, amely az Altera Stratix 10 FPGA-ra épült és 32 magot (512 szálat) tartalmaz, 230 MHz-es órajelen 3,7 gigapixelt másodpercenként (29,4 gigatranzakciót másodpercenként) tudott elérni. Érdemes megjegyezni, hogy ez az első olyan nyílt GPU, amely szoftveres és hardveres megvalósítással rendelkezik, és támogatja a Vulkant.
A Vortex 2.1-es verziójában bekövetkezett változások közül:
- Bevezetésre került a spawn_taskgroups API, amely lehetővé teszi a helyi memóriát használó magok indítását és a memóriabesarok beállítását.
- Egy új kiterjesztést javasoltak a mozgatható (relocatable) bináris magok létrehozásához.
- A memória kezelés API-jába új hívások kerültek be: vx_mem_reserve, vx_mem_access és vx_mem_address.
- Új runtime API került bevezetésre: vx_check_occupancy.
- A GPU-hoz készült illesztőprogramba egy opció került be, amely lehetővé teszi az OpenCL tesztek helyi GPU-n történő ellenőrzését.
- Helyi memóriát használó OpenCL tesztek kerültek bevezetésre (psum, sgemm2, sgemm3).
- A Vortexhez kifejezetten alkalmazott libc és librt könyvtárak adódtak hozzá.
- Hozzáadva a szomszédos szabad memória blokkok (memory coalescing) egyesítésének támogatása.
- Mikroarchitektúra optimalizálás történt.
- Új build szkript került hozzáadásra, amely elválasztja a forrásfájlokat a build mappától.
Forrás: opennet.ru
