Projekt Vortex 3.0, ki razvija odprtokodni GPGPU, ki temelji na arhitekturi nabora ukazov RISC-V in je zasnovan za vzporedno računanje z uporabo OpenCL API-ja in modela izvajanja SIMT (Single Instruction, Multiple Threads), je zdaj na voljo. Projekt se lahko uporablja tudi za raziskave 3D-grafike in razvoj novih arhitektur GPU-jev. Sheme, opisi strojne opreme v Verilogu, simulator, gonilniki in priložena dokumentacija o zasnovi so distribuirani pod licenco Apache 2.0.
GPGPU temelji na standardnem RISC-V ISA, razširjenem z dodatnimi ukazi za podporo funkcij GPU in upravljanja niti. Spremembe arhitekture nabora ukazov RISC-V so čim manjše, obstoječi vektorski ukazi pa se uporabljajo, kadar koli je to mogoče. Dodatni ukazi vključujejo: "tex" za pospešitev obdelave tekstur; vx_rast za nadzor rasterizacije; vx_rop za obdelavo fragmentov, globine in prosojnosti; vx_imadd za operacije množenja in seštevanja; vx_wspawn, vx_split, vx_join, vx_tmc in vx_bar za aktiviranje skupin niti (valovnih front), ki jih vzporedno izvaja SIMD Engine.

Razvijani GPGPU podpira 32- in 64-bitni arhitekturi ukaznih nizov RISC-V RV32IMF in RV64IMAFD ter lahko vključuje izbirni deljeni pomnilnik, predpomnilnike L1, L2 in L3 ter nastavljivo število jeder, warpov in niti. Vsako jedro lahko vključuje tudi nastavljivo število ALU-jev, FPU-jev, LSU-jev in SFU-jev. Za izdelavo prototipov se lahko uporabljajo FPGA-ji Xilinx in Altera, za simulacijo čipov pa Verilator (simulator Verilog), RTLSIM (simulacija RTL) in SimX (simulacija programske opreme).
Za razvoj aplikacij je na voljo komplet orodij, ki vključuje Vortexu prilagojene različice PoCL (prevajalnik in izvajalno okolje OpenCL), LLVM/Clang, GCC in Binutils. Projekt podpira specifikacijo OpenCL 1.2 in implementira podporo za vmesno predstavitev senčil SPIR-V prek prevajanja v OpenCL.
Spremembe v Vortexu 3.0 vključujejo:
- Dodan je bil strojni grafični sklad, vključno z bloki za rasterizacijo, preslikavo tekstur in združevanje izhodov (OM). Za Mesa je bil razvit gonilnik Vulkan, vortexpipe, ki temelji na implementiranem grafičnem skladu in programskem rasterizatorju lavapipe.
- Zmogljivosti Tensor Core, zasnovane za pospešitev izvajanja modelov strojnega učenja, so bile razširjene z uvedbo podpore za strukturirano redkost za stiskanje matrik uteži.
- Za množenje matric v asinhronem načinu je bila implementirana operacija WGMMA (množenje matric na ravni osnovne skupine).
- Dodan je bil mehanizem DXA (pospeševanje prenosa podatkov) za pospešitev prenosa podatkov iz globalnega v lokalni pomnilnik.
- Implementirana je bila nova arhitektura, ki temelji na procesorju ukazov (CP) in strojnem razporejevalniku računalniških jeder (KMU - Kernel Management Unit), ki omogoča razporejanje računalniških niti na stran čipa.
- Predlagana je nova izvajalna knjižnica, ki deluje v neblokirnem načinu in zagotavlja abstrakcije, ki se prevedejo v asinhrono izvedene strojne ukaze. Podprte so čakalne vrste, dogodki, moduli in sinhronizacija, ki temeljijo na asinhronih ovirah s semantiko prihoda/čakanja/dogodka.
- Dodana podpora za skrajšane ukaze RISC-V (RVC).
- Izvedena je bila strojna podpora za atomske operacije (Hardware Atomics).
- FPU je bil popolnoma preoblikovan in uvedeni so bili novi bloki množilnika (Wallaceovo drevo, zložena osnova) in seštevalnika (Kogge-Stone).
- Dodan je bil sklad virtualnega pomnilnika, ki temelji na enoti za upravljanje pomnilnika (MMU) s podporo za 32-bitno arhitekturo virtualnega naslavljanja SV32.
- Podpora za razširitev RISC-V Zicond z implementacijo pogojnih operacij.
- Integrirano upravljanje ure.
- Podpora za jezik HIP (Heterogeneous Interface for Portability) je bila implementirana prek ogrodja chipStar, ki prevaja HIP v SPIR-V.
- Zagotovljena je bila popolna integracija s simulatorjem GEM5, dodana pa je bila tudi podpora za simulator SimX na arhitekturi TLM (modeliranje na ravni transakcij).
- Dodana je podpora za komplete orodij Synopsys in Yosys za logično sintezo za proizvodnjo čipov, kot tudi podpora za uporabo knjižnic standardnih elementov ASAP7 (7nm), SAED14 (14nm) in NanGate (15nm).
- Referenčni nabor orodij je bil posodobljen na LLVM 20 in POCL 7.0.
Vir: opennet.ru
