Bolestný projekt Vortex 2.2, ktorý vyvíja otvorený GPGPU na báze architektúry sady príkazov RISC-V, určený na vykonávanie paralelných výpočtov pomocou API OpenCL a modelu vykonávania SIMT (Single Instruction, Multiple Threads). Projekt môžete tiež využiť pri výskumoch v oblasti 3D grafiky a pri vývoji nových architektúr GPU. Schémy, popisy hardvérových blokov v jazyku Verilog, simulátor, ovládače a sprievodná projektová dokumentácia sú distribuované pod licenciou Apache 2.0.
Základom GPGPU je typový ISA RISC-V, rozšírený o niektoré dodatočné inštrukcie potrebné na podporu funkcií GPU a riadenie tokov. Zmeny v architektúre sady príkazov RISC-V sú minimalizované a ak je to možné, využívajú sa už existujúce vektorové inštrukcie. Medzi dodatočnými inštrukciami môžeme spomenúť: „tex“ na zrýchlenie spracovania textúr, vx_rast na riadenie rastrejizácie, vx_rop na spracovanie fragmentov, hĺbky a priehľadnosti, vx_imadd na vykonanie operácie „násobiť a sčítať“, vx_wspawn, vx_tmc a vx_bar na aktiváciu vlákien inštrukcií a tokov v nich (wavefront, sada nití vykonávaných súčasne SIMD Engine), vx_split a vx_join.

Rozvíjaný GPGPU podporuje 32- a 64-bitové architektúry sady príkazov RISC-V RV32IMF a RV64IMAFD a môže obsahovať voliteľnú zdieľanú pamäť, vyrovnávacie pamäte úrovní L1, L2 a L3, ako aj prispôsobiteľný počet jadier, blokov úloh (warps) a tokov. Pre každé jadro je potom možné zapnúť prispôsobiteľný počet ALU, FPU, LSU a SFU. Na vytváranie prototypov je možné použiť FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 a Xilinx Versal VCK5000. Na simuláciu čipu môžu byť použité Verilator (Verilog simulátor), RTLSIM (RTL simulácia) a SimX (softvérová simulácia).
Na vývoj aplikácií je k dispozícii nástroj, ktorý zahŕňa prispôsobené varianty PoCL (kompilátor a runtime OpenCL) pre prácu so Vortex, LLVM/Clang, GCC a Binutils. Projekt podporuje špecifikáciu OpenCL 1.2 a cez preklad do OpenCL je realizovaná podpora medzivrstvy shaderov SPIR-V. Pre grafiku na technológiách Vortex sa vyvíja otvorený GPU Skybox, ktorý podporuje grafické API Vulkan. Prototyp Skybox, vyvinutý na základe FPGA Altera Stratix 10 a obsahujúci 32 jadier (512 vlákien), dosiahol pri frekvencii 230 MHz výkon plnenia 3.7 gigapixelov za sekundu (29.4 gigatransakcií za sekundu).
Medzi zmenami vo verzii Vortex 2.2:
- Pridané API vx_spawn_taskgroups na spustenie jadier podporujúcich segmentované vykonávanie 3D úloh.
- Pridaná podpora ZICOND, rozšírenia architektúry sady inštrukcií RISC-V, ktoré umožňuje podmienené vykonávanie operácií bez vetvenia.
- Kompilátor OpenCL bol preložený na plánovanie vykonávania na úrovni jednotlivých vlákien (thread-level, každé vlákno vykonáva svoju úlohu nezávisle od ostatných vlákien), a nie na skupiny úloh (warp-level), ako bolo predtým.
- Do OpenCL bola pridaná podpora JIT kompilácie a 64-bitových jadier.
- Zrealizovaná podpora dynamického načítania Vortex runtime.
- Navrhnutá nová dokumentácia na nastavenie FPGA Xilinx.
- Zahŕňa testovanie syntézy logiky s použitím nástroja Yosys.
- V hierarchických operáciách flush a v režime write-back je zabezpečená podpora cache.
- Optimalizovaná rýchlosť overovania scoreboard a práce s operandmi na úrovni registrových prenosov (RTL, Register Transfer Level).
- Pridaná podpora simulačného DRAM pamäte Ramulator 2.0.
- Prechod na použitie nových verzií Verilator 5.0 (simulátor SystemVerilog) a LLVM 18.0, a taktiež aktualizovaný nástrojový základ na báze CentOS 7.9.
- Namiesto systému kontinuálnej integrácie Travis CI bol nasadený servis GitHub CI.
Zdroj: opennet.ru
