Dostępny Vortex 2.0, otwarty GPGPU oparty na architekturze RISC-V

Opublikowana została druga edycja projektu Vortex, rozwijającego otwarty GPGPU oparty na architekturze zestawu instrukcji RISC-V, zaprojektowany do wykonywania obliczeń równoległych z wykorzystaniem API OpenCL i modelu wykonywania SIMT (Single Instruction, Multiple Threads). Projekt może być także wykorzystywany w badaniach z zakresu grafiki 3D oraz w opracowywaniu nowych architektur GPU. Schematy, opisy bloków sprzętowych w języku Verilog, symulator, sterowniki oraz dokumentacja projektowa są udostępniane na licencji Apache 2.0.

Podstawą GPGPU jest typowy ISA RISC-V, rozszerzony o dodatkowe instrukcje, które są niezbędne do wsparcia funkcji GPU i zarządzania strumieniami. Zmiany w architekturze zestawu instrukcji RISC-V są minimalne, a w miarę możliwości wykorzystywane są już istniejące instrukcje wektorowe. Podobne podejście stosowane jest w projekcie RV64X, który także rozwija otwarty GPU oparty na technologiach RISC-V.

Dostępny Vortex 2.0, otwarty GPGPU oparty na architekturze RISC-V

Dla grafiki w technologiach Vortex rozwijany jest otwarty GPU Skybox, wspierający graficzne API Vulkan. Prototyp Skybox, wykonany na bazie FPGA Altera Stratix 10 i zawierający 32 rdzenie (512 wątków), osiągnął przy częstotliwości 230 MHz wydajność na poziomie 3.7 gigapikseli na sekundę (29.4 gigatransakcji na sekundę). Zauważono, że jest to pierwszy otwarty GPU z programową i sprzętową realizacją, który wspiera Vulkan.

Główne cechy Vortex:

  • Wsparcie dla 32- i 64-bitowych architektur zestawu instrukcji RISC-V RV32IMF i RV64IMAFD.
  • Konfigurowalna liczba rdzeni, bloków zadań (warps) i wątków.
  • Konfigurowalna liczba ALU, FPU, LSU i SFU dla każdego rdzenia.
  • Konfigurowana szerokość wydania potoku (pipeline issue width).
  • Opcjonalna pamięć dzielona oraz pamięci podręczne poziomów L1, L2 i L3.
  • Wsparcie dla specyfikacji OpenCL 1.2.
  • Możliwość realizacji na bazie FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 oraz Xilinx Versal VCK5000.
  • Rozszerzone instrukcje: «tex» do przyspieszenia 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_tmc i vx_bar do aktywacji frontów instrukcji i wątków w nich (wavefront, zestaw wątków wykonywanych równolegle przez SIMD Engine), vx_split i vx_join.
  • Wsparcie dla pośredniej reprezentacji shadery SPIR-V realizowane jest poprzez translację do OpenCL.
  • Do tworzenia aplikacji dostępne są narzędzia, w tym dostosowane do pracy z Vortex wersje PoCL (kompilator i runtime OpenCL), LLVM/Clang, GCC i Binutils.
  • Obsługiwana jest symulacja działania układu przy użyciu Verilator (symulator Verilog), RTLSIM (symulacja RTL) i SimX (symulacja programowa).

Wśród zmian w wersji Vortex 2.0:

  • Przeprowadzono optymalizację mikroarchitektury.
  • Dodano wsparcie dla 64-bitowej architektury zestawu instrukcji RISC-V RV64IMAFD.
  • Dodano możliwość implementacji na podstawie FPGA Xilinx.
  • Dodano wsparcie dla LLVM 16 i Ubuntu 20.04.
  • Przeprowadzono refaktoryzację i wprowadzono poprawki niedoróbek wykrytych podczas oceny jakości.

Ź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