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

Opublikowano nową wersję projektu Vortex, rozwijającego otwartą architekturę GPGPU opartą na zestawie instrukcji RISC-V, zaprojektowaną do wykonywania obliczeń równoległych przy użyciu API OpenCL i modelu wykonawczego SIMT (Single Instruction, Multiple Threads). Projekt może być również wykorzystany w badaniach z zakresu grafiki 3D oraz przy tworzeniu nowych architektur GPU. Schematy, opisy bloków sprzętowych w języku Verilog, symulator, sterowniki i towarzysząca dokumentacja projektowa są dostępne 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.

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

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).

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.

Wśród zmian w wersji Vortex 2.1:

  • Dodano API spawn_taskgroups do uruchamiania rdzeni korzystających z lokalnej pamięci i wspierających ustawianie barier dla pamięci.
  • Zaproponowano nowe rozszerzenie do tworzenia przenośnych (relocatable) binarnych rdzeni.
  • W API zarządzania pamięcią dodano wywołania vx_mem_reserve, vx_mem_access oraz vx_mem_address.
  • Dodano nowe API runtime vx_check_occupancy.
  • Do sterownika GPU dodano opcję do sprawdzania testów OpenCL na lokalnym GPU.
  • Dodano testy OpenCL korzystające z lokalnej pamięci (psum, sgemm2, sgemm3).
  • Dodano specjalnie dostosowane dla Vortex edycje bibliotek libc i librt.
  • Dodano wsparcie dla łączenia sąsiednich wolnych bloków pamięci (memory coalescing).
  • Przeprowadzono optymalizację mikroarchitektury.
  • Dodano nowy skrypt kompilacyjny, oddzielający pliki źródłowe od katalogu kompilacji.

Ź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