Megjelent a Vortex 2.2 projekt kiadása, amely a RISC-V utasításkészlet architektúrájára épülő nyílt GPGPU-t fejleszti, és amely párhuzamos számítások végrehajtására készült az OpenCL API és a SIMT (Single Instruction, Multiple Threads) végrehajtási modell segítségével. A projekt 3D grafikai kutatásokhoz és új GPU architektúrák fejlesztéséhez is felhasználható. A Verilog nyelven írt hardverblokk diagramok, leírások, szimulátorok, illesztőprogramok és a kapcsolódó projekt dokumentáció Apache 2.0 licenc alatt terjeszthetők.
A GPGPU alapját a tipikus RISC-V ISA képezi, amelyet néhány további utasítással bővítettek ki, amelyek szükségesek a GPU funkciók és a szálkezelés támogatásához. Az RISC-V utasításkészlet architektúrájában a módosításokat minimálisra csökkentették, és lehetőség szerint a meglévő vektoros utasításokat használják. A további utasítások közül kiemelhető a «tex» a textúrák feldolgozásának gyorsítására, vx_rast a raszterezés kezelésére, vx_rop a fragmentumok, a mélység és az átlátszóság feldolgozására, vx_imadd a «szorozni és összeadni» művelet végrehajtására, valamint a vx_wspawn, vx_tmc és vx_bar az utasításfrontek és szálak aktiválásához (wavefront, a SIMD Engine által párhuzamosan végrehajtott szálcsoport), vx_split és vx_join.

A fejlesztett GPGPU támogatja a RISC-V RV32IMF és RV64IMAFD 32- és 64-bites utasításkészlet architektúrákat, és opcionálisan tartalmazhat megosztott memóriát, L1, L2 és L3 szintű cache-eket, valamint testreszabható számú magot, feladatblokkot (warps) és szálat. Minden mag esetében lehetőség van testreszabható számú ALU, FPU, LSU és SFU aktiválására. Prototípusok létrehozásához használhatók az Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 és Xilinx Versal VCK5000 FPGA-k. A chip működésének szimulálásához a Verilator (Verilog szimulátor), RTLSIM (RTL szimuláció) és SimX (szoftveres szimuláció) alkalmazhatók.
Az alkalmazásfejlesztéshez egy eszközkészlet áll rendelkezésre, amely a Vortexhoz való alkalmazkodott PoCL (OpenCL fordító és runtime) verziókat, LLVM/Clang, GCC és Binutils-t tartalmaz. A projekt támogatja az OpenCL 1.2 specifikációt és az OpenCL-en keresztül történő transzlációval megvalósítja a SPIR-V shader köztes reprezentációt. A Vortex technológiákon alapuló grafikai megoldásként fejlődik az open GPU Skybox, amely támogatja a Vulkan grafikai API-t. A Skybox prototípusa, amely az Altera Stratix 10 FPGA alapját képezi és 32 magot (512 szálat) tartalmaz, 230 MHz-es frekvencián 3,7 gigapixeles másodpercenkénti teljesítményt (29,4 gigatranzakciót másodpercenként) ért el.
A Vortex 2.2-es verzióban történt változások közül:
- Hozzáadva a vx_spawn_taskgroups API a szálak indításához, amelyek támogatják a 3D feladatok szegmentált végrehajtását.
- Megvalósítva a ZICOND támogatása, a RISC-V utasításkészlet architektúrájának kiterjesztése, amely az operációk feltételes végrehajtását teszi lehetővé ágazás nélkül.
- Az OpenCL fordítót áttettük a feladatok szintjén történő végrehajtás ütemezésére (thread-level, minden szál a saját feladatát függetlenül végzi a többi szálától), nem feladatcsoportok szintjén (warp-level), ahogy eddig volt.
- Az OpenCL-ben hozzáadva a JIT fordítást és 64 bites magok támogatását.
- Megvalósítva a Vortex runtime dinamikus betöltésének támogatása.
- Új dokumentációt javasoltunk az Xilinx FPGA beállításáról.
- Logikai szintézis tesztelése kapcsolatban Yosys eszközkészlettel.
- Hierarchikus flush műveletekben és write-back módban bővített cache támogatás biztosítása.
- Gyorsaság optimalizálása a scoreboard-ellenőrzés és a regiszterek közötti átvitel (RTL, Register Transfer Level) operációk során.
- A DRAM memória Ramulator 2.0 szimulátor támogatása hozzáadva.
- Átálltunk az új Verilator 5.0 (SystemVerilog szimulátor) és LLVM 18.0 verziókra, valamint frissült a CentOS 7.9 alapú eszközkészlet.
- A folyamatos integrálásra szolgáló Travis CI helyett a GitHub CI szolgáltatás áll rendelkezésre.
Forrás: opennet.ru
