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
