Het VeriGPU-project is gericht op het creƫren van een open GPU, ontwikkeld met de beschrijvings- en modellerings taal voor elektronische systemen, Verilog. Aanvankelijk wordt het project ontwikkeld met behulp van de Verilog-simulator, maar zodra het klaar is, kan het worden gebruikt voor de productie van echte chips. De ontwikkelingen van het project worden verspreid onder de MIT-licentie.
VeriGPU is gepositioneerd als een gespecialiseerde processor (ASIC), geoptimaliseerd voor het versnellen van berekeningen die verband houden met systemen voor machine learning. In de plannen wordt vermeld dat compatibiliteit met het diepgaande machine learning-framework PyTorch zal worden gegarandeerd en dat de mogelijkheid om applicaties voor VeriGPU te ontwikkelen met behulp van de HIP (Heterogeneous-Compute Interface) API zal worden gerealiseerd. Verder wordt er niet uitgesloten dat de ondersteuning van andere API's, zoals SYCL en NVIDIA CUDA, in de toekomst wordt toegevoegd.
De GPU is ontwikkeld op basis van de RISC-V instructieset, maar de uiteindelijke interne architectuur van de GPU-instructieset is slecht compatibel met de RISC-V ISA, omdat in situaties waarin het ontwerp van de GPU niet binnen de RISC-V specificaties past, de focus niet ligt op het behouden van compatibiliteit met RISC-V. De ontwikkeling is gefocust op de mogelijkheden die nodig zijn voor machine learning-systemen, daarom wordt alleen het vervolg- en complexiteitsformaat van BF16 floating-point-berekeningen gebruikt en zijn alleen de voor machine learning benodigde floating-point-operaties, zoals exp, log, tanh en sqrt, beschikbaar.
De reeds beschikbare componenten omvatten een GPU-controller, APU (Accelerated Processing Unit) voor gehele getaloperaties ('+', '-', '/', '*'), een blok voor floating-pointoperaties ('+', '*') en een takondersteuningsblok. Voor het ontwikkelen van applicaties wordt een assembler aangeboden en wordt ondersteuning voor het compileren van code in C++ op basis van LLVM geboden. Sommige geplande mogelijkheden zijn parallelle uitvoering van instructies, geheugen caching voor gegevens en instructies, en SIMT (Single Instruction Multiple Thread) operaties.

Bron: opennet.ru
