Opublikowano Vortex 3.0, otwarty GPGPU oparty na architekturze RISC-V

Wydanie projektu Vortex 3.0 jest dostępne, rozwijającego otwarte GPGPU oparte na architekturze zestawu instrukcji RISC-V, zaprojektowane do wykonywania obliczeń równoległych z wykorzystaniem API OpenCL i modelu wykonania SIMT (Single Instruction, Multiple Threads). Projekt można również wykorzystać w badaniach w dziedzinie grafiki 3D oraz przy opracowywaniu nowych architektur GPU. Schematy, opisy bloków sprzętowych w języku Verilog, symulator, sterowniki oraz towarzysząca dokumentacja projektowa są wydawane na licencji Apache 2.0.

Podstawę GPGPU stanowi typowy ISA RISC-V, rozszerzony dodatkowymi instrukcjami wspierającymi funkcje GPU i zarządzanie wątkami. Zmiany w architekturze zestawu instrukcji RISC-V zostały zminimalizowane, a tam, gdzie to możliwe, wykorzystano już istniejące instrukcje wektorowe. Wśród dodatkowych instrukcji znajdują się: „tex” do przyspieszania przetwarzania tekstur; vx_rast do zarządzania rastrowaniem, vx_rop do przetwarzania fragmentów, głębokości i przezroczystości; vx_imadd do wykonywania operacji „mnożenie i dodawanie”; vx_wspawn, vx_split, vx_join, vx_tmc i vx_bar do aktywacji grup wątków (wavefront), wykonywanych równolegle przez SIMD Engine.

Rozwijane GPGPU wspiera 32- i 64-bitowe architektury zestawu instrukcji RISC-V RV32IMF i RV64IMAFD, i może obejmować opcjonalną pamięć dzieloną, pamięci podręczne poziomów L1, L2 i L3, a także konfigurowaną liczbę rdzeni, bloków zadań (warps) i wątków. Dla każdego rdzenia przewidziano możliwość włączenia konfigurowanej liczby ALU, FPU, LSU i SFU. Do tworzenia prototypów można wykorzystać FPGA Xilinx i Altera, a do symulacji działania chipu stosowane są Verilator (symulator Verilog), RTLSIM (symulacja RTL) oraz SimX (symulacja programowa).

W celu opracowania aplikacji dostępny jest zestaw narzędzi, obejmujący przystosowane do pracy z Vortex wersje PoCL (kompilator i runtime OpenCL), LLVM/Clang, GCC i Binutils. Projekt wspiera specyfikację OpenCL 1.2 oraz poprzez translację do OpenCL wprowadza wsparcie dla pośredniego przedstawienia shaderów SPIR-V.

Wśród zmian w Vortex 3.0:

  • Dodano sprzętowy stos graficzny, w tym bloki do rastrowania, nakładania tekstur i scalania wyjścia (OM — Output Merger). Dla Mesa, w oparciu o zrealizowany stos graficzny i programowy rastrowizator lavapipe, przygotowano sterownik Vulkan vortexpipe.
  • Rozszerzono możliwości rdzenia tensorowego, przeznaczonego do przyspieszania wykonywania modeli uczenia maszynowego, który obsługuje strukturalną oszczędność (structured sparsity) w celu kompresji macierzy wagowych.
  • Zaimplementowano operację WGMMA (warpgroup-level matrix multiplication) do mnożenia macierzy w trybie asynchronicznym.
  • Dodano silnik DXA (Data Transfer Acceleration) do przyspieszenia transferu danych z pamięci globalnej do lokalnej.
  • Zrealizowano nową architekturę opartą na procesorze komend (CP, Command Processor) i sprzętowym harmonogramie obliczeń (KMU — Kernel Management Unit), co pozwala na przeniesienie operacji dotyczących zarządzania strumieniami obliczeniowymi na stronę chipu.
  • Proponowana jest nowa biblioteka runtime działająca w trybie nieblokującym, oferująca abstrakcje tłumaczone na sprzętowe komendy wykonywane asynchronicznie. Obsługiwane są kolejki, zdarzenia, moduły oraz synchronizacja oparta na asynchronicznych barierach z semantyką arrive/wait/event.
  • Dodano wsparcie dla skróconych instrukcji RISC-V (RVC).
  • Zaimplementowano sprzętowe wsparcie for operacji atomowych (Hardware Atomics).
  • Całkowicie przeprojektowano FPU oraz wprowadzono nowe moduły mnożników (Wallace-tree, Folded-radix) i sumatorów (Kogge-Stone).
  • Dodano stos pamięci wirtualnej oparty na bloku kontrolera pamięci (MMU) z obsługą 32-bitowej architektury adresacji wirtualnej SV32.
  • Wsparcie dla rozszerzenia RISC-V Zicond z realizacją operacji warunkowych.
  • Zintegrowano zarządzanie zegarami (clock gating).
  • Zaimplementowano wsparcie dla języka HIP (Heterogeneous Interface for Portability) przez framework chipStar, który przekształca HIP na SPIR-V.
  • Zapewniono pełną integrację z symulatorem GEM5 oraz dodano wsparcie dla symulatora SimX w architekturze TLM (Transaction-Level Modeling).
  • Dodano wsparcie dla narzędzi Synopsys i Yosys do syntezy logiki dla produkcji chipów, a także wsparcie dla bibliotek standardowych elementów ASAP7 (7nm), SAED14 (14nm) i NanGate (15nm).
  • Zestaw narzędzi referencyjnych zaktualizowano do LLVM 20 i POCL 7.0.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster