COMPTOIR
register

RDNA 3 et les Dual-Issue CU : toujours plus de spéculations

Il y a quelques jours à peine, un sympathique cliché officiel permettait d’observer de près le die des RX 7900 XT(X), l’occasion rêvée pour tenter de découvrir quelle disposition logique se cachait sous le capot. Fort de discussions animées avec des experts du domaine, notre cher confrère @Locuza_ a complété et revu ses annotations, de quoi passer la soirée au jeu des 4 différences !

 

 

Si nous n’allons pas pinailler sur la majorité de ces détails, l’un d’entre eux revêt une importance cruciale : l’organisation logique des nouveaux CU. En effet, avec RDNA 3, AMD a annoncé avoir gonflé ces derniers de manière à accepter deux instructions par cycle et ainsi doubler leur puissance de calcul, ce que certains ont interprété comme un doublement effectif de leur quantité ; tandis que nous supputions une fusion CU-WGP. Raté !

 

rdna2 cu wgp supposition2

 

En effet, les WGP sont toujours présents et combinent toujours bien 2 CU dual-issue soit 4 SIMD32 dual-issue, au passage chacune gonflée d’un accélérateur d’IA. Cependant, le doublement du débit FP32 de ces CU n’est, en fait, pas valable pour toutes les opérations : si les FMA (fused multiply-add) ont bien droit à deux unités au sein des nouveaux CU, tel n’est pas le cas des instructions faisant usage de l’accélérateur d’IA (dont toutes celles faisant partie de l’extension DP4a), des Rapid Packed Math (opérations vectorielles en FP16 à quadruple vitesse) ni les opérations de calcul entier 15/24/32 bits. Dans la pratique, un dual-issue CU ressemble dans l’esprit à un module de feue l’architecture Bulldozer : deux files d’instructions, mais certaines unités communes, d’autres non. À l’exception que Bulldozer partageait les unités de calcul flottant, et que la réservation de l’unité était effectuée dynamiquement selon l’ordre d’ordonnancement des processus, là où RDNA 3 se doit d’intégrer ces restrictions dès la compilation des kernels GPU. À voir dans les semaines qui suivent ce qu’il en sera en pratique !

Un poil avant ?

La famille RTX 4080 GIGABYTE en photo !

Un peu plus tard ...

Chieftec introduit un boitier qu'est sobre et pas trop grand

Les 21 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Un ragoteur sans avis en Île-de-France, le Lundi 14 Novembre 2022 à 14h41  
J'ai récemment entendu parlé d'un nouveau format pour le machine learning: le FP8, dont l'une des variante reprendrait à priori le format du minifloat.
Mais avec seulement 2 ou 3 bits pour la mantisse, soit 0.9 à 1.2 chiffres significatifs, et pas beaucoup plus en dynamique, ça fait un peu peur
Moi en tout cas j'en suis resté au FP16. Mais c'était pas pour les mêmes besoins (de la sérialisation, pas de l'IA)
par Un champion du monde embusqué, le Samedi 12 Novembre 2022 à 15h39  
par Nicolas D. ?? le Samedi 12 Novembre 2022 à 14h18
AVX512 => C'est pour cela que je l'ai mentionné, faire du vectoriel de 8 bits sur 512 bits en un coup ça peut séduire

Unités matricielles RDNA3 => Oui je me suis mal exprimé je voulais dire qu'actuellement AMD n'a grand chose pour rivaliser face aux tensors cores de NVDIA mais la donne peut être changée avec l'arrivée de ces nouvelles unités, dont on ne sait pas grand chose à l'heure actuelle.

CDNA en IA => il y avait très peu d'infos sur internet sur CDNA2 et les MI200. Heureusement que je m'étais sauvegardé l'article de chipsandcheese qui font des anlyses à droite à gauche. Quand je dis que les cartes ne sont pas performantes, je parle par rapport à la concurrence. Pour citer l'article "The MI250X's matrix units are improved over the ones in CDNA1, but it still only matches NVIDIA's throughput per CU/SM clock with FP64. NVIDIA still offers higher matrix throughput when dealing with lower precision formats, making Hopper a much better choice for ML and AI workloads."
La fin de l'article me permet d'ailleurs une merveilleuse ouverture sur les innovations futures d'AMD.

PSoc Xilinx => Oui je parle d'une partie proco avec en annexe un FPGA/CPLD. Dans les présentations d'AMD, ils appellent ça XDNA et c'est explicitement indiqué que c'est majoritairement pour des applications comme l'IA un petit lien tout mignon En réfléchissant c'est beaucoup plus logique un FPGA en traitement qu'en entrainement

Types => Donc on entraîne en haute précision, pour ensuite basculer en basse précision afin d'accélérer le traitement c'est bien ça ?

En tout cas merci pour toutes ces explications
par Nicolas D., le Samedi 12 Novembre 2022 à 14h33  
Si l'INT8 est utilisé pour des microcontrôleur et du hardawre basse consommation, c'est surtout parce que ces bouzins n'ont pas vraiment autre chose de rapide. Après, c'est plus souvent du BF16 ou du FP16 selon le support et selon l'application. Un FPGA est très bon pour le calcul entier et moins pour le flottant, c'est pour ca que l'entraînement est plus rare dessus (Microsoft a tenté et... C'est pas vraiment un grand nom de la sphère ML). En général on va donc 1) entrainer un réseau en FP32, 2) le convertir en FP16/INT8 (et parfois un mix des deux poids / activation) puis réentrainer un peu pour retrouver un peu la précisions (des prédictions du réseaux) perdue en passant en FP16/INT8.
Pour ton point 3 c'est vrai puisque le débit FMA FP32 est doublé RN passant en dual issue (c'est pour ca que la puissance en FLOPS double à nombre de CU égal, mais normalement les IA cores devraient être plus rapides pour ca (ce qui n'empêche normalement pas d'utiliser CU + IA à fond les ballons apres, ca dépend de la puissance des CU face aux IA cores).

Attention par contre, on peut tout à fait entrainer sur CPU, c'est une question plutôt financière. Dans la recherche ou l'industrie, c'est parfois plus adapter de faire un cluster de calcul en CPU uniquement si tu ne fais pas tourner que des taches de ML dessus, meme si cest dernières seront effectivement bien plus lente. Et inversement, si tu veux faire de la détection d'objet en temps réel sur une image 4k60 FPS, bon courage pour n'utiliser qu'un CPU, il faudra un truc plus gros. Même dans l'embarqué il y a des coprocesseurs, genre soit des petits GPU, soit directement des accélérateurs dédiés type IA cores (c'est omniprésent dans les téléphones, où le CPU Arm n'est pas assez puissant), soit des FPGA
par Nicolas D., le Samedi 12 Novembre 2022 à 14h18  
par Un champion du monde embusqué le Samedi 12 Novembre 2022 à 13h55
2. L'IA en général se fait sur des basses précisions (je vois souvent passer les INT8), est ce que les flottants sont inexistants ? Même si j'avoue avoir déjà vu le type BF16.
3. Logiquement, le Dual Issue des RDNA3 devrait permettre un accroissement des performances dans un calcul "formaté" (préparé et réfléchi pour être exploité au mieux) comme ceux que l'on utilise dans l'IA non ?
Qu'on soit d'accord, l'AVX-512 c'est le rêve pour l'IA, le soucis ici cest que c'est implémenté avec deux unités AVX2, mais si il y avait 2 unités AVX-512 ca serait le feu de dieu :-).

Attention, il y a des unités matricielles sur RDNA 3 (ces IA cores), qui sont héritées de CDNA, l'architecture pour centres de calcul ; ca peut être intéressant d'en parler... Et donc sisi, les cartes CDNA sont bien competentes sur le papier pour l'IA. Effectivement, OpenCL, le langage de programmation GPGPU de AMD (et NVIDIA pour de la compatibilité, meme si CUDA est plus rapide) n'est pas encore bien supporté par TensorFlow, un des grands framework de machine learning. Il faudrait regarder sur PyTorch, je ne connais pas...

Programmable SoC, tu parles de FPGA ? C'est possible à l'avenir avec le rachat de Xilinx, oui, mais pour le moment cest limité à l'inférence (utilisation du réseau de neurone) et pas (trop) à l'entraînement.

L'IA adooooore les cœurs CPU. Maintenant, toute l'IA grand public c'est des réseaux de neurones, convolutionnels pour le traitement sur une image, récurrents pour du traitement sur du son ou du texte. A l'entraînement, on utilise le plus souvent du FP32, puis on diminue la précision selon le matériel que l'on veut cibler pour l'inférence.
par Un champion du monde embusqué, le Samedi 12 Novembre 2022 à 13h55  
2. L'IA en général se fait sur des basses précisions (je vois souvent passer les INT8), est ce que les flottants sont inexistants ? Même si j'avoue avoir déjà vu le type BF16.
3. Logiquement, le Dual Issue des RDNA3 devrait permettre un accroissement des performances dans un calcul "formaté" (préparé et réfléchi pour être exploité au mieux) comme ceux que l'on utilise dans l'IA non ?
par Un champion du monde embusqué, le Samedi 12 Novembre 2022 à 13h49  
par Nicolas D. le Vendredi 11 Novembre 2022 à 16h19
(J'espère que tu parlais de CPU, parce que en GPU c'est totalement différent )
Ouah merci pour toutes ces ressources
j'ai beaucoup avancé de mon côté et ça me permettre d'éviter de dire des bêtises sur la présentation
je me suis débrouillé avec les analyses du comptoir sur les applications IA et sur les articles de chipsandcheese
La présentation se fait sur toutes les solutions de l'entreprises et les innovations des dernières générations donc je commence avec une partie de CPU, où je parle de l'arrivée de l'AVX512 (même si je sais que le gain est limité car c'est la concaténation de 2 AVX2, c'est toujours vendeur) et de la multiplication des coeurs sur Zen4.
Pour la partie GPU, je parle de l'absence d'unité matricielle à la NVIDIA sur le grand public (et l'absence de support logiciel avec le fameux ROCm vs CUDA) mais que peut-être RDNA3 devrait changer les choses avec les accel IA tandis que les cartes CDNA des serveurs ne sont pas forcément conçues pour le ML (les CU sont optimisées pour la forte précision).
Enfin, je parle d'un possible PSoc AMD à l'avenir qui serait parfait dans l'IA car ce type de composant est très apprécié, la logique configurable permettant d'effectuer une unité de calcul sur mesure.
Il y par contre 2-3 points sur lesquels je reste incertains.
1.Est ce que le nombre de coeurs CPU importe beaucoup pour l'IA ? De ce que l'on m'a dit, par exemple sur un réseau neuronal, les GPU sont exploités pour l'entrainement mais un CPU suffit largement pour juste l'exploiter pour un traitement. Alors une tâche devrait suffire largement.
par Nicolas D., le Vendredi 11 Novembre 2022 à 16h19  
par Un adepte de Godwin en Auvergne-Rhône-Alpes ?? le Jeudi 10 Novembre 2022 à 09h12
Pour un projet universitaire dans mes études, je dois présenter les changements d'AMD dans les architectures pour d'optimiser à l'IA donc j'ai besoin de la moindre information/illustration
Déjà que je suis un peu perdu parce que je ne connais pas du tout les calculs d'IA
(J'espère que tu parlais de CPU, parce que en GPU c'est totalement différent )
par Nicolas D., le Vendredi 11 Novembre 2022 à 16h14  
par Un adepte de Godwin en Auvergne-Rhône-Alpes ?? le Jeudi 10 Novembre 2022 à 09h12
Pour un projet universitaire dans mes études, je dois présenter les changements d'AMD dans les architectures pour d'optimiser à l'IA donc j'ai besoin de la moindre information/illustration
Déjà que je suis un peu perdu parce que je ne connais pas du tout les calculs d'IA
Suite:
- Zen 4 (2022) : intégration de l'AVX-512 qui ne change pas le débit max théorique, mais qui permet de retirer d'alléger le coût du décodage (et donc les perfs en situation réel) + intégration du BF16, un format d'encodage de données flottantes meilleur pour le ML.

Bonus :
- 5800X3D / EPYC Milan-X : plus de L3 => meilleurs pour les multiplications de matrices tuilées (décomposition par bloc des matrices de manière a occuper tout le cache ; donc L3 plus grand = blocs plus grands = meilleurs perfs). Note que je t'as mis les liens vers les CPU grand public mais c'est exactement pareil pour les version serveur .
par Nicolas D., le Vendredi 11 Novembre 2022 à 16h09  
par Un adepte de Godwin en Auvergne-Rhône-Alpes ?? le Jeudi 10 Novembre 2022 à 09h12
Pour un projet universitaire dans mes études, je dois présenter les changements d'AMD dans les architectures pour d'optimiser à l'IA donc j'ai besoin de la moindre information/illustration
Déjà que je suis un peu perdu parce que je ne connais pas du tout les calculs d'IA
Envoie-moi un mail via la section contact, je devrai pouvoir te filer quelque ressources . La principale chose à savoir c'est que les machine learning (ce qu'on appelle IA en ce moment) c'est de la multiplication de matrices. Donc tout ce qui est gonflement du pipeline vectoriel c'est nickel (et tout ce qui est prédiction de branchement c'est pas nécessaire car le code est régulier) :
- Zen 1 (2014) : première version de l'archi. Rien de spé pour le ML (prend ça comme la brique de base, description rapide des perfs AVX).
- Zen+ : refresh, pas de changements archi : on skip
- Zen 2 (2017) : doublement du débit AVX (pipeline flottant)
- Zen 3 (2020) : Amélioration de la latence de la multiplication-accumulation (a += b*c + d) qui est the opération des réseaux de neurones
par Nicolas D., le Vendredi 11 Novembre 2022 à 16h05  
par Un ragoteur qui se repose en Nouvelle-Aquitaine le Vendredi 11 Novembre 2022 à 13h59
Je pense qu c'est aussi pour montrer que c'est une techno qui date et que c'est pas "nouveau".
Bulldozer étant le plus ancien, c'est genre 2010.
Ou parce que le rédac (moi) est spécialisé sur les archi CPU / FPGA mais moins GPU pas besoin de chercher aussi loin '.
par Un ragoteur qui se repose en Nouvelle-Aquitaine, le Vendredi 11 Novembre 2022 à 13h59  
par Un énarque des ragots du Grand Est ?? le Jeudi 10 Novembre 2022 à 01h13
Pourquoi citer Bulldozer quand nVidia avait fait exactement la même chose, de mémoire avec Kepler?
Je pense qu c'est aussi pour montrer que c'est une techno qui date et que c'est pas "nouveau".
Bulldozer étant le plus ancien, c'est genre 2010.
par Un énarque des ragots en Bourgogne-Franche-Comté, le Vendredi 11 Novembre 2022 à 06h59  
par Un énarque des ragots du Grand Est ?? le Jeudi 10 Novembre 2022 à 01h13
Pourquoi citer Bulldozer quand nVidia avait fait exactement la même chose, de mémoire avec Kepler?
Un lien avec la fameuse exécution concomitante qui était possible avec les AMD mais pas les nvidia (ou qui ne profitaient pas aux perfs car peu efficace) ?