Vortex 2.2 ist verfügbar, offene GPGPU auf Basis der RISC-V-Architektur

Die Veröffentlichung des Projekts Vortex 2.2 wurde bekannt gegeben, das ein offenes GPGPU auf der Grundlage der RISC-V-Befehlssatzarchitektur entwickelt, das für die Durchführung paralleler Berechnungen mit der OpenCL-API und dem SIMT-Ausführungsmodell (Single Instruction, Multiple Threads) ausgelegt ist. Das Projekt kann auch für Forschung in den Bereichen 3D-Grafik und die Entwicklung neuer GPU-Architekturen eingesetzt werden. Schemas, Beschreibungen von Hardwareblöcken in Verilog, Simulatoren, Treiber und begleitende Projektdokumentation werden unter der Apache 2.0-Lizenz veröffentlicht.

Die Grundlage des GPGPU bildet der Standard-ISA RISC-V, der um einige zusätzliche Anweisungen erweitert wurde, die notwendig sind, um GPU-Funktionen und Thread-Management zu unterstützen. Änderungen an der RISC-V-Befehlssatzarchitektur sind minimiert, und es werden soweit wie möglich bereits vorhandene Vektor-Anweisungen verwendet. Zu den zusätzlichen Anweisungen gehören: „tex“ zur Beschleunigung der Texturverarbeitung, vx_rast zur Steuerung der Rasterisierung, vx_rop für die Verarbeitung von Fragmenten, Tiefe und Transparenz, vx_imadd zur Ausführung der Operation „Multiplizieren und Addieren“, sowie vx_wspawn, vx_tmc und vx_bar zur Aktivierung von Instruktions- und Threadfronten (Wavefront, Satz von Threads, die parallel im SIMD-Engine ausgeführt werden), vx_split und vx_join.

Vortex 2.2 ist verfügbar, offene GPGPU auf Basis der RISC-V-Architektur

Das entwickelte GPGPU unterstützt die 32- und 64-Bit-Befehlssatzarchitekturen RISC-V RV32IMF und RV64IMAFD und kann optional gemeinsamen Speicher, Caches der Ebenen L1, L2 und L3 sowie eine anpassbare Anzahl von Kernen, Arbeitsblöcken (warps) und Threads enthalten. Für jeden Kern besteht die Möglichkeit, eine anpassbare Anzahl von ALU, FPU, LSU und SFU zu aktivieren. Zum Prototyping können FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 und Xilinx Versal VCK5000 verwendet werden. Zur Simulation des Chipbetriebs können Verilator (Verilog-Simulator), RTLSIM (RTL-Simulation) und SimX (Software-Simulation) eingesetzt werden.

Für die Anwendungsentwicklung steht ein Toolkit zur Verfügung, das angepasste Versionen von PoCL (Compiler und Runtime für OpenCL), LLVM/Clang, GCC und Binutils umfasst, die mit Vortex kompatibel sind. Das Projekt unterstützt die OpenCL-Spezifikation 1.2 und bietet durch die Übersetzung in OpenCL Unterstützung für die Zwischenrepräsentation von Shadern SPIR-V. Für Grafik auf Basis von Vortex wird die offene GPU Skybox entwickelt, die die Grafik-API Vulkan unterstützt. Der Prototyp der Skybox, der auf dem FPGA Altera Stratix 10 basiert und 32 Kerne (512 Threads) umfasst, konnte bei einer Frequenz von 230 MHz eine Einfüllleistung von 3,7 Gigapixeln pro Sekunde (29,4 Gigatransaktionen pro Sekunde) erreichen.

Unter den Änderungen in der Version Vortex 2.2:

  • Die API vx_spawn_taskgroups wurde hinzugefügt, um Kerne zu starten, die segmentierte Ausführungen von 3D-Aufgaben unterstützen.
  • Die Unterstützung für ZICOND, eine Erweiterung der RISC-V-Befehlssatzarchitektur, die bedingte Ausführungen von Operationen ohne Verzweigungen ermöglicht, wurde hinzugefügt.
  • Der OpenCL-Compiler wurde auf die Ausführungsplanung auf der Ebene einzelner Threads (Thread-Level, jeder Thread führt seine Aufgabe unabhängig von anderen Threads aus) umgestellt, anstelle von Aufgabengruppen (Warp-Level), wie es zuvor der Fall war.
  • In OpenCL wurde die Unterstützung für JIT-Kompilierung und 64-Bit-Kerne hinzugefügt.
  • Die dynamische Laden des Vortex-Runtimes wurde implementiert.
  • Es wurde eine neue Dokumentation zur Konfiguration von Xilinx FPGA angeboten.
  • Das Testen der Logiksynthese mit den Tools von Yosys wurde integriert.
  • In hierarchischen Flush-Operationen und im Write-Back-Modus wurde die Unterstützung für den Cache bereitgestellt.
  • Die Geschwindigkeit der Scoreboard-Verifikation und die Arbeit mit Operanden auf der Ebene der Registerübertragungen (RTL, Register Transfer Level) wurden optimiert.
  • Die Unterstützung des DRAM-Simulators Ramulator 2.0 wurde hinzugefügt.
  • Der Übergang zu den neuen Versionen von Verilator 5.0 (SystemVerilog-Simulator) und LLVM 18.0 wurde vollzogen, und die Toolchain auf Basis von CentOS 7.9 wurde aktualisiert.
  • Anstelle des kontinuierlichen Integrationssystems Travis CI wurde der Dienst GitHub CI eingesetzt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4