Vortex, projekt, který vyvíjí GPGPU založené na RISC-V

Vortex, GPGPU na bázi RISC-V

RISC-V je architektura, která si získala velkou oblibu V posledních letech je to díky svému open source (ISA) designu a to a dodává, že se stal jednou z nejdůležitějších procesorových architektur díky své flexibilitě a modularitě.

Díky tomu Byly zahájeny různé projekty založené na RISC-V a jedním z nich je Vortex, o kterém si dnes povíme zde na blogu.

Co je projekt Vortex?

Vír es projekt, který vyvíjí GPGPU, založené na architektuře RISC-V. Projekt je navržen pro provádění paralelních výpočtů pomocí OpenCL API a exekučního modelu SIMT.

Jádrem Vortex GPGPU je generický RISC-V, na kterém byla implementována vylepšení s několika dalšími pokyny nutné pro podporu funkčnosti GPU a řízení vláken. Změny v architektuře instrukční sady RISC-V jsou přitom omezeny na minimum a kdykoli je to možné, jsou využívány stávající vektorové instrukce. Podobný přístup je použit v projektu RV64X, který rovněž vyvíjí otevřené GPU založené na technologiích RISC-V.

Další funkce Vortex je GPGPU má pokročilé pokyny, mezi něž patří: »tex» pro urychlení zpracování textur, «vx_rast» pro řízení rasterizace, «vx_rop» pro zpracování fragmentů, hloubky a průhlednosti, «vx_imadd» pro provádění operací násobení a sčítání, «vx_wspawn» , "vx_tmc" a "vx_bar" pro aktivaci hran instrukcí a vlnoploch (soubor vláken vykonávaných paralelně modulem SIMD), "vx_split" a "vx_join".

Z cVortex hlavní funkce, které vynikají jsou nalezeny následující:

  •  Podpora pro 32bitové a 64bitové architektury instrukční sady RISC-V: RV32IMF a RV64IMAFD.
  • Konfigurovatelnost: Konfigurovatelný počet jader, bloků úloh (warps) a vláken.
  • Procesní jednotka: Konfigurovatelný počet ALU, FPU, LSU a SFU na jádro.
  • Šířka výstupu: Nastavitelná šířka výstupu potrubí.
  • Paměť: Volitelná sdílená paměť a mezipaměti L1, L2 a L3.
  • Podpora specifikace OpenCL 1.2.
  • Implementace na bázi FPGA: Možnost implementace na FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 a Xilinx Versal VCK5000.
  • Podpora SPIR-V: Implementováno prostřednictvím překladu do OpenCL.
    Vývojové nástroje: Sada nástrojů, která obsahuje varianty PoCL (kompilátor OpenCL a runtime), LLVM/Clang, GCC a Binutils přizpůsobené pro práci s Vortexem.
  • Chip Simulation: Podporováno pomocí Verilator (Simulátor Verilog), RTLSIM (Simulace RTL) a SimX (Simulace softwaru).
    GPU Skybox

Kromě toho, pro grafiku založenou na technologiích Vortex se vyvíjí GPU Skybox otevřený, který podporuje grafické rozhraní API Vulkan. Je zmíněno, že prototyp Skyboxu je vytvořen na bázi Altera Stratix 10 FPGA a včetně 32 jader (512 vláken) na frekvenci 230 MHz Nutno podotknout, že se jedná o první otevřené GPU se softwarovou i hardwarovou implementací kompatibilní s Vulkanem

Za zmínku stojí V současné době je projekt Vortex ve své verzi 2.1, který byl nedávno vydán a byly implementovány důležité změny jako: podpora slučování paměti (která je nyní podporována), optimalizováno zpracování instrukcí CSR, optimalizováno přetížení, nový konfigurační skript sestavení, mimo jiné:

  • Přidáno rozhraní API jádrapěšcové_úkolové skupiny spouštět jádra, která používají místní paměť a bariéry
  • Nové rozšíření runtime pro přemístitelné argumenty jádra a binární soubory.
  • Nové doplňky API runtime paměti: vx_mem_reserve, vx_mem_access, vx_mem_address
  • nové runtime API vx_check_occupancy
  • Přidána možnost ovladače GPU pro vyzkoušení testů OpenCL na místním GPU (např. blackbox.sh –driver=gpu –app=sgemm)
  • Přidány testy OpenCL, které se používají s místní pamětí (psum, sgemm2, sgemm3)
  • Přidány vlastní vortexové knihovny libc a librt s řídicí divergenční instrumentací.

Pokud se o tom chcete dozvědět více, měli byste vědět, že schémata, popisy hardwarových bloků v jazyce Verilog, simulátor, ovladače a doprovodná projektová dokumentace jsou distribuovány pod licencí Apache 2.0. Podrobnosti můžete zkontrolovat v následující odkaz.