Vortex 2.1 veröffentlicht: Offenes GPGPU basierend auf der RISC-V-Architektur

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

Die Grundlage des GPGPU bildet ein typisches ISA RISC-V, das um einige zusätzliche Befehle erweitert wurde, die zur Unterstützung von GPU-Funktionen und zur Verwaltung von Streams erforderlich sind. Dabei sind die Änderungen in der RISC-V-Befehlssatzarchitektur minimiert und es werden nach Möglichkeit bereits vorhandene Vektorbefehle genutzt. Ein ähnlicher Ansatz wird im Projekt RV64X verfolgt, das ebenfalls ein offenes GPU auf Basis von RISC-V-Technologien entwickelt.

Vortex 2.1 veröffentlicht: Offenes GPGPU basierend auf der RISC-V-Architektur

Hauptmerkmale von Vortex:

  • Unterstützung von 32- und 64-Bit-Architekturen der RISC-V-Befehlssätze RV32IMF und RV64IMAFD.
  • Konfigurierbare Anzahl an Kernen, Taskblocks (warps) und Threads.
  • Anpassbare Anzahl von ALU, FPU, LSU und SFU für jeden Kern.
  • Einstellbare Breite der Pipeline-Ausgabe.
  • Optionale gemeinsame Speicherkapazität sowie Caches der Ebenen L1, L2 und L3.
  • Unterstützung der OpenCL-Spezifikation 1.2.
  • Möglichkeit zur Realisierung auf Basis von FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 und Xilinx Versal VCK5000.
  • Erweiterte Instruktionen: „tex“ zur Beschleunigung der Texturverarbeitung, vx_rast zur Steuerung der Rasterisierung, vx_rop zur Verarbeitung von Fragmenten, Tiefe und Transparenz, vx_imadd zur Durchführung von „multiplizieren und addieren“, vx_wspawn, vx_tmc und vx_bar zur Aktivierung von Instruktionsfronten und darin enthaltenen Threads (Wavefront, Thread-Gruppe, parallel ausgeführt durch SIMD Engine), vx_split und vx_join.
  • Die Unterstützung für die Zwischenrepräsentation von Shaders SPIR-V erfolgt durch Übersetzung in OpenCL.
  • Für die Anwendungsentwicklung steht ein Toolkit zur Verfügung, das angepasste Varianten von PoCL (OpenCL-Compiler und -Laufzeit), LLVM/Clang, GCC und Binutils umfasst.
  • Die Simulation des Chipbetriebs wird durch Verilator (Verilog-Simulator), RTLSIM (RTL-Simulation) und SimX (Software-Simulation) unterstützt.

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

Unter den Änderungen in der Version Vortex 2.1:

  • Die API spawn_taskgroups wurde hinzugefügt, um Kerne zu starten, die lokalen Speicher nutzen und die Barrieren für den Speicher unterstützen.
  • Ein neues Erweiterung zur Erstellung von relocatable Binär-Kernen wurde vorgeschlagen.
  • In die API zur Speicherverwaltung wurden die Aufrufe vx_mem_reserve, vx_mem_access und vx_mem_address integriert.
  • Ein neuer Runtime-API vx_check_occupancy wurde hinzugefügt.
  • Der Treiber für die GPU wurde um die Option zur Überprüfung von OpenCL-Tests auf der lokalen GPU erweitert.
  • OpenCL-Tests, die lokalen Speicher nutzen (psum, sgemm2, sgemm3), wurden hinzugefügt.
  • Spezifisch für Vortex angepasste Versionen der Bibliotheken libc und librt wurden hinzugefügt.
  • Unterstützung für das Zusammenführen benachbarter freier Speicherblöcke (memory coalescing) wurde hinzugefügt.
  • Die Mikroarchitektur wurde optimiert.
  • Ein neues Build-Skript wurde hinzugefügt, das die Quellcode-Dateien vom Build-Verzeichnis trennt.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster