Le projet VeriGPU a annoncé le développement d'un GPU ouvert

Le projet VeriGPU dévoilé Il ya quelques jours a commencé à travailler sur le développement d'un GPU ouvert, qui vise à être développé sous le langage de modélisation et de description des systèmes électroniques Verilog.

Pour ceux qui ne connaissent pas VeriGPU, sachez qu'il se positionne comme un processeur spécifique à l'application (ASIC) optimisé pour accélérer les calculs liés aux systèmes d'apprentissage automatique.

façon de commencer, le projet est développé à l'aide du simulateur Verilog, mais une fois prêt, il peut être utilisé pour produire de vraies puces.

Les plans incluent la prise en charge du cadre d'apprentissage en profondeur PyTorch et la possibilité de développer des applications pour VeriGPU à l'aide de l'API HIP (Heterogeneous Computing Interface). À l'avenir, l'intégration de la prise en charge d'autres API, telles que SYCL et NVIDIA CUDA, n'est pas exclue.

Il est important de mentionner que le développement de ce GPU vise directement la formation en machine learning. Il devrait donc idéalement prendre en charge les frameworks d'apprentissage automatique actuels tels que PyTorch et Tensorflow, ce qui signifie qu'il doit presque certainement prendre en charge NVIDIA CUDA ou AMD HIP.

Bien qu'il soit également mentionné que Je sais que je pourrais implémenter une interface OpenCL ou SYCL, bien que la prise en charge des principaux frameworks soit actuellement limitée. Il existe un cadre d'apprentissage en profondeur OpenCL dédié dans DeepCL, mais il a un ensemble relativement limité de couches de réseau neuronal et de topologies de réseau possibles, par rapport à PyTorch et Tensorflow.

Actuellement, nous n'avons pas l'intention d'implémenter une exécution dans le désordre, c'est-à-dire de démarrer une instruction avant que la précédente n'ait commencé, car cela est délicat dans un scénario de multithreading à instruction unique (SIMT), et parce que cela fait que les cœurs utilisent plus de zone de matrice. , et donc moins nombreux (ou plus chers).

D'autre part, nous allons implémenter l'exécution d'instructions parallèles, où nous démarrons une instruction pendant que l'instruction précédente est toujours en cours d'exécution. Ceci est standard et assez léger, il ne prend pas trop de place sur la matrice.

Aucune mise en cache d'aucune sorte n'est actuellement implémentée (pas de niveau 1, pas de niveau 2, pas de niveau 3, pas même de cache d'instructions :P). Puisque j'ai l'intention de créer un GPU, qui a un mécanisme de cache différent de celui du CPU, j'y penserai une fois qu'il commencera à ressembler davantage à un GPU.

Le GPU évolue en fonction du jeu d'instructions RISC-V, mais l'architecture du jeu d'instructions GPU interne qui en résulte est peu compatible avec le RISC-V ISA, car dans les situations où la disposition du GPU n'est pas conforme au rendu RISC-V, en plus de ne pas définir la tâche de maintenir la compatibilité avec RISC-V .

Depuis le développement se concentre sur les capacités requises pour les systèmes d'apprentissage automatique, par conséquent, pour réduire la taille et la complexité du réseau de puces, seul le format à virgule flottante BF16 est utilisé, et seules les opérations à virgule flottante qui sont demandées pour l'apprentissage automatique, telles que exp, log, tanh et sqrt sont disponible.

Parmi les composants déjà disponibles, par exemple, le pilote GPU, APU (Accelerated Processing Unit) pour les opérations sur les nombres entiers («+»,»-«,»/»,»*»), unité pour les opérations en virgule flottante («+», »*») et une unité de branche, ainsi que la prise en charge du compilateur HIP.

Pour créer des applications un assembleur et un support pour la compilation de code C++ sont fournis basé sur LLVM. Parmi les fonctionnalités attendues, exécution parallèle des instructions, mise en cache des données et mémoire d'instructions, les opérations SIMT (Single Instruction Multiple Thread) se démarquent.

Enfin, si vous souhaitez en savoir plus concernant le développement de ce GPU open source, sachez que les développements du projet sont distribués sous licence MIT et vous pouvez consulter le code, ainsi que l'avancement du projet depuis le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.