Doli një botim të projektit Vortex 3.0, që zhvillon një GPGPU të hapur mbi arkitekturën e setit të komandave RISC-V, e cila është e dedikuar për kryerjen e llogaritjeve paralele duke përdorur API OpenCL dhe modelin e ekzekutimit SIMT (Single Instruction, Multiple Threads). Projekti gjithashtu mund të përdoret për kërkime në fushën e grafikës 3D dhe për zhvillimin e arkitekturave të reja GPU. Diagramet, përshkrimet e blokëve harduerik në gjuhën Verilog, simuluesi, driverat dhe dokumentacioni i shoqërueshëm i projektit shpërndahen nën licencën Apache 2.0.
The GPGPU bazohet në ISA-në tipike RISC-V, e cila është zgjeruar me udhëzime shtesë për mbështetje të funksioneve GPU dhe menaxhimin e rrjedhave. Ndryshimet në arkitekturën e setit të komandave RISC-V janë minimizuar dhe, sa herë që është e mundur, janë përdorur udhëzim të veçanta vektorike ekzistuese. Ndër udhëzimet shtesë gjenden: «tex» për përshpejtimin e përpunimit të teksturave; vx_rast për menaxhimin e rastery; vx_rop për përpunimin e fragmenteve, thellësisë dhe transparencës; vx_imadd për realizimin e operacionit «shumëzo dhe shëno»; vx_wspawn, vx_split, vx_join, vx_tmc dhe vx_bar për aktivizimin e grupeve të rrjedhave (wavefront), të ekzekutuara paralelisht nga SIMD Engine.

GPGPU që po zhvillohet mbështet arkitekturën e setit të komandave RISC-V RV32IMF dhe RV64IMAFD me 32-bit dhe 64-bit, dhe mund të përfshijë memorin ndarëse opsionale, cache të niveleve L1, L2 dhe L3, si dhe një numër të personalizuar njësish, blloqesh pune (warps) dhe rrjedhash. Në këtë mënyrë, për çdo bërthamë parashikohet mundësia e aktivizimit të një numri të personalizuar ALU, FPU, LSU dhe SFU. Prototipet mund të krijohen duke përdorur FPGA Xilinx dhe Altera, dhe për simullimin e punës së çipit duhet përdorur Verilator (simuluesi Verilog), RTLSIM (simulimi RTL) dhe SimX (simulimi softuerik).
Për zhvillimin e aplikacioneve ofrohet një set mjetesh, përfshirë variante të PoCL të përshtatura për të punuar me Vortex (kompiluesi dhe runtime OpenCL), LLVM/Clang, GCC dhe Binutils. Projekti mbështet specifikimin OpenCL 1.2 dhe, përmes translacionit në OpenCL, realizon mbështetje për përfaqësimin e ndërmjetëm të shenjuesve SPIR-V.
Ndër ndryshimet në Vortex 3.0:
- Është shtuar një stek grafik harduerik, që përfshin blloqe për rastery, vendosjen e teksturave dhe bashkimin e daljes (OM — Output Merger). Për Mesa, mbi stekun grafik të implementuar dhe rastery-n e softuerit lavapipe, është përgatitur nje driver Vulkan i quajtur vortexpipe.
- Janë zgjeruar mundësitë e bërthamës tensorike, e cila është e dedikuar për përshpejtimin e ekzekutimit të modeleve të mësimit të avancuar, në të cilën është realizuar mbështetje për rishtimin struktural (structured sparsity) për kompresimin e matriçave të peshave.
- Është realizuar operacioni WGMMA (warpgroup-level matrix multiplication) për shumëzimin e matriçave në mënyrë asinkrone.
- Është shtuar një motor DXA (Data Transfer Acceleration) për të përshpejtuar transferimin e të dhënave nga memoria globale në atë lokale.
- Një arkitekturë e re është realizuar mbi procesorin e komandave (CP, Command Processor) dhe planifikuesin harduerik të njësive llogaritative (KMU — Kernel Management Unit), e cila lejon që operacionet e ndarjes së rrjedhave të llogaritjes të realizohen jashtë çipit.
- Është propozuar një biblioteke e re runtime që punon në një mod të pa bllokuar dhe ofron abstraksione, të cilat janë të translacionuara në komanda të ekzekutueshme të harduerike asinkrone. Mbështeten radhë, ngjarje, module dhe sinkronizim mbi bazën e barrierave asinkrone me semantikën arrive/wait/event.
- Është shtuar mbështetje për udhëzime të shkurtra RISC-V (RVC).
- Është realizuar mbështetje harduerike për operacionet atomike (Hardware Atomics).
- FPU është risëvuguar plotësisht dhe janë ofruar blloqe të reja shumëzuesish (Wallace-tree, Folded-radix) dhe treguesish (Kogge-Stone).
- Është shtuar një stek i memories virtuale mbi bazën e bllokut të menaxhimit të memories (MMU) me mbështetje për arkitekturën 32-bit të adresimit virtual SV32.
- Mbështetje për zgjerimin RISC-V Zicond me realizimin e operacioneve kushtore.
- Është integruar menaxhimi i frekuencës së orës (clock gating).
- Është realizuar mbështetje për gjuhën HIP (Heterogeneous Interface for Portability) përmes kornizës chipStar, e cila e transliton HIP në SPIR-V.
- Është siguruar integrim i plotë me simuluesin GEM5 dhe është shtuar mbështetje për simuluesin SimX mbi arkitekturën TLM (Transaction-Level Modeling).
- Është shtuar mbështetje për mjetet Synopsys dhe Yosys për sintezën e logjikës për prodhimin e çipave, si dhe mbështetje për përdorimin e biblioteka të elementeve standarde ASAP7 (7nm), SAED14 (14nm) dhe NanGate (15nm).
- Seti referencë është përmirësuar në LLVM 20 dhe POCL 7.0.
Burimi: opennet.ru
