Das VeriGPU-Projekt zielt darauf ab, eine offene GPU zu schaffen, die in der Spezifikations- und Modellierungssprache für elektronische Systeme Verilog entwickelt wird. Ursprünglich wird das Projekt mit einem Verilog-Simulator entwickelt, kann aber nach Abschluss für die Herstellung von echten Chips verwendet werden. Die Projektentwicklungen werden unter der MIT-Lizenz veröffentlicht.
VeriGPU positioniert sich als spezialisierter Prozessor (ASIC), der optimiert ist, um Berechnungen im Zusammenhang mit maschinellem Lernen zu beschleunigen. In den Plänen wird die Sicherstellung der Kompatibilität mit dem Framework für tiefes maschinelles Lernen PyTorch erwähnt und die Möglichkeit der Entwicklung von Anwendungen für VeriGPU unter Verwendung der API HIP (Heterogeneous-Compute Interface) implementiert. Zukünftig wird auch die Unterstützung anderer APIs wie SYCL und NVIDIA CUDA nicht ausgeschlossen.
Die GPU wird auf der Grundlage des RISC-V-Befehlssatzes entwickelt, jedoch ist die endgültige interne Architektur des GPU-Befehlssatzes nur geringfügig mit RISC-V ISA kompatibel, da in Situationen, in denen das Design der GPU nicht in das Konzept von RISC-V passt, nicht angestrebt wird, die Kompatibilität mit RISC-V zu wahren. Die Entwicklung konzentriert sich auf die für Systeme des maschinellen Lernens erforderlichen Funktionen, weshalb nur das Format für Fließkomma-Berechnungen BF16 verwendet wird, und nur die für das maschinelle Lernen erforderlichen Fließkomma-Operationen wie exp, log, tanh und sqrt verfügbar sind.
Zu den bereits verfügbaren Komponenten gehören der GPU-Controller, APU (Accelerated Processing Unit) für Ganzzahloperationen ('+', '-', '⁄', '*'), ein Block für Fließkommaoperationen ('+', '*') und ein Block zur Unterstützung von Verzweigungen. Für die Anwendungsentwicklung werden ein Assembler und Unterstützung für die Codekompilierung in C++ auf der Basis von LLVM angeboten. Zu den geplanten Funktionen gehören parallele Ausführung von Anweisungen, Caching von Daten- und Instruktionsspeicher sowie SIMT-Operationen (Single instruction multiple thread).

Quelle: opennet.ru
