Vortex 2.0 ist verfügbar, ein offenes GPGPU auf Basis der RISC-V-Architektur

Die zweite Version des Vortex-Projekts wurde veröffentlicht, das ein offenes GPGPU basierend auf der RISC-V-Befehlsarchitektur entwickelt und für die Durchführung paralleler Berechnungen mit der OpenCL-API und dem SIMT-Modell (Single Instruction, Multiple Threads) ausgelegt ist. Das Projekt kann auch für Forschungsarbeiten im Bereich 3D-Grafik und zur Entwicklung neuer GPU-Architekturen verwendet werden. Schaltpläne, Beschreibungen der Hardwareblöcke in Verilog, Simulatoren, Treiber und begleitende Projektdokumentation werden unter der Apache 2.0-Lizenz veröffentlicht.

Die Grundlage des GPGPU bildet das standardmäßige ISA RISC-V, das um einige zusätzliche Instruktionen erweitert wurde, die erforderlich sind, um GPU-Funktionen und das Thread-Management zu unterstützen. Dabei wurden Änderungen an der RISC-V-Befehlsarchitektur auf ein Minimum beschränkt und vorhandene Vektorinstruktionen nach Möglichkeit verwendet. Ein ähnlicher Ansatz wird im Projekt RV64X verfolgt, das ebenfalls ein offenes GPU auf Basis der RISC-V-Technologien entwickelt.

Vortex 2.0 ist verfügbar, ein offenes GPGPU auf Basis der RISC-V-Architektur

Für die Grafik wird auf den Vortex-Technologien das offene GPU Skybox entwickelt, das die Grafik-API Vulkan unterstützt. Der auf der FPGA Altera Stratix 10 basierende Prototyp von Skybox, der 32 Kerne (512 Threads) umfasst, konnte bei einer Frequenz von 230 MHz eine Füllrate von 3,7 Gigapixel pro Sekunde (29,4 Gigatransaktionen pro Sekunde) erreichen. Es wird darauf hingewiesen, dass dies das erste offene GPU mit Software- und Hardware-Implementierung ist, das Vulkan unterstützt.

Haupmerkmale von Vortex:

  • Unterstützung von 32- und 64-Bit-Befehlsarchitekturen RISC-V RV32IMF und RV64IMAFD.
  • Anpassbare Anzahl von Kernen, Aufgabenblöcken (warps) und Threads.
  • Anpassbare Anzahl von ALUs, FPUs, LSUs und SFUs für jeden Kern.
  • Anpassbare Breite der Pipeline-Ausgabe (pipeline issue width).
  • Optionale gemeinsame Speicher und Caches der Ebenen L1, L2 und L3.
  • Unterstützung der OpenCL 1.2-Spezifikation.
  • Implementierungsmöglichkeiten auf FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 und Xilinx Versal VCK5000.
  • Erweiterte Anweisungen: „tex“ zur Beschleunigung der Texturverarbeitung, vx_rast zur Steuerung der Rasterisierung, vx_rop zur Verarbeitung von Fragmenten, Tiefe und Transparenz, vx_imadd zur Ausführung der Operation „multiplizieren und addieren“, vx_wspawn, vx_tmc und vx_bar zur Aktivierung von Fronten von Anweisungen und Threads in diesen (Wavefront, Gruppe von Threads, die parallel im SIMD-Engine ausgeführt werden), vx_split und vx_join.
  • Die Unterstützung der Zwischendarstellung von Shadern SPIR-V wird durch Übersetzung in OpenCL realisiert.
  • Für die Anwendungsentwicklung steht ein Toolkit zur Verfügung, das angepasste PoCL-Varianten (Compiler und Runtime OpenCL) für die Arbeit mit Vortex, LLVM/Clang, GCC und Binutils umfasst.
  • Die Simulation des Chips wird mit Verilator (Verilog-Simulator), RTLSIM (RTL-Simulation) und SimX (Software-Simulation) unterstützt.

Zu den Änderungen in Version Vortex 2.0 gehören:

  • Die Mikroarchitektur wurde optimiert.
  • Die Unterstützung der 64-Bit-Architektur des RISC-V-Kommandosatzes RV64IMAFD wurde hinzugefügt.
  • Die Möglichkeit zur Implementierung auf Xilinx FPGA wurde hinzugefügt.
  • Unterstützung für LLVM 16 und Ubuntu 20.04 wurde hinzugefügt.
  • Es wurde ein Refactoring durchgeführt und Korrekturen für bei der Qualitätseinschätzung identifizierte Mängel vorgenommen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4