Byla zveřejněna nová verze projektu Vortex 2.2, který vyvíjí otevřený GPGPU na základě architektury RISC-V, zaměřený na provádění paralelních výpočtů s využitím API OpenCL a modelu vykonávání SIMT (Single Instruction, Multiple Threads). Projekt může být rovněž použit pro výzkum v oblasti 3D grafiky a při vývoji nových architektur GPU. Schémata, popisy hardwarových bloků v jazyce Verilog, simulátor, ovladače a související projektová dokumentace jsou distribuovány pod licencí Apache 2.0.
Základ GPGPU tvoří standardní ISA RISC-V, rozšířená o několik dalších instrukcí potřebných pro podporu funkcí GPU a řízení vláken. Při tom jsou změny v architektuře RISC-V minimalizovány a pokud možno využívají již existující vektorové instrukce. Mezi další instrukce patří: 'tex' pro urychlení zpracování textur, vx_rast pro řízení rastrování, vx_rop pro zpracování fragmentů, hloubky a průhlednosti, vx_imadd pro provedení operace 'násobit a sčítat', vx_wspawn, vx_tmc a vx_bar pro aktivaci front instrukcí a vláken v nich (wavefront, soubor vláken prováděných paralelně SIMD Engine), vx_split a vx_join.

Vyvinutý GPGPU podporuje 32- a 64bitové architektury RISC-V RV32IMF a RV64IMAFD a může zahrnovat volitelnou sdílenou paměť, keš L1, L2 a L3, jakož i přizpůsobitelný počet jader, bloků úloh (warps) a vláken. Pro každé jádro je navíc k dispozici možnost aktivace přizpůsobitelného počtu ALU, FPU, LSU a SFU. Pro prototypování lze použít FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 a Xilinx Versal VCK5000. Pro simulaci činnosti čipu mohou být využity Verilator (simulátor Verilog), RTLSIM (simulace RTL) a SimX (softwarová simulace).
Pro vývoj aplikací je k dispozici nástrojový kit, který zahrnuje přizpůsobené varianty PoCL (kompilátor a runtime OpenCL) pro práci s Vortex, LLVM/Clang, GCC a Binutils. Projekt podporuje specifikaci OpenCL 1.2 a prostřednictvím překladu do OpenCL implementuje podporu pro meziprodukty shaderů SPIR-V. Pro grafiku na technologiích Vortex se vyvíjí open-source GPU Skybox, který podporuje grafické API Vulkan. Prototyp Skybox, vytvořený na bázi FPGA Altera Stratix 10 a zahrnující 32 jader (512 vláken), umožnil při frekvenci 230 MHz dosáhnout výkonu plnění 3,7 gigapixelů za sekundu (29,4 gigatransakcí za sekundu).
Mezi změnami ve verzi Vortex 2.2:
- Přidán API vx_spawn_taskgroups pro spuštění jader, která podporují segmentované provádění 3D úloh.
- Přidána podpora ZICOND, rozšíření architektury sady příkazů RISC-V, která zajišťuje podmíněné provádění operací bez větvení.
- Kompilátor OpenCL byl převeden na plánování provádění na úrovni jednotlivých vláken (thread-level, každé vlákno provádí svůj úkol nezávisle na ostatních vláknech), místo skupin úloh (warp-level), jak tomu bylo dříve.
- V OpenCL byla přidána podpora JIT kompilace a 64bitových jader.
- Byla implementována podpora dynamického načítání Vortex runtime.
- Byla navržena nová dokumentace pro nastavení FPGA Xilinx.
- Bylo zahrnuto testování syntézy logiky pomocí nástrojového kitu Yosys.
- V hierarchických operacích flush a v režimu write-back byla zajištěna podpora cache.
- Byla optimalizována rychlost scoreboard-verifikace a práce s operandy na úrovni registrů (RTL, Register Transfer Level).
- Byla přidána podpora simulátoru DRAM pamětí Ramulator 2.0.
- Byl realizován přechod na používání nových verzí Verilator 5.0 (simulátor SystemVerilog) a LLVM 18.0, a také byl aktualizován nástrojový kit na bázi CentOS 7.9.
- Místo systému kontinuální integrace Travis CI byl zaveden servis GitHub CI.
Zdroj: opennet.ru
