Hopper (microarchitecture)

Hopperest unemicroarchitecturedeprocesseur graphique(GPU) développée parNvidia. Elle est conçue pour lesserveursdescentres de donnéeset est sortie parallèlement à la microarchitectureAda Lovelace.
Nommée d'après l'informaticienne et contre-amiral de l'United States NavyGrace Hopper, l'architecture Hopper a fuité en novembre 2019 et a été officiellement révélée en mars 2022. Elle améliore les performances de ses prédécesseurs, les microarchitecturesTuringetAmpere, possédant un nouveaumultiprocesseurde flux et un sous-système mémoire plus rapide.
Le GPU Hopper H100 est fabriqué avec le procédéTSMC4N et comporte 80 milliards de transistors. Il possède jusqu'à 144multiprocesseursde flux. Dans unsocketSXM5(en), le Hopper H100 offre de meilleures performances que lePCIe.
Les multiprocesseurs de flux (SM) d'Hopper améliorent ceux des microarchitecturesTuringetAmpere, bien que nombre maximal dewarpsconcurrents par SM reste identique entre les architectures Ampere et Hopper, 64. L'architecture Hopper fournit unTensor Memory Accelerator(TMA), qui supporte le transfert mémoire asynchrone bidirectionnel entre la mémoire partagée et la mémoire globale. Avec le TMA, les applications peuvent transférer jusqu'à des tenseurs 5D. Lors d'écritures entre la mémoire partagée et la mémoire globale, les opérateurs de réduction par élément et par bit peuvent être utilisés, évitant les instructions sur registres et SM, tout en permettant aux utilisateurs d'écrire des codes spécialisés dans les warps. Le TMA est activé parcuda::memcpy_async.
Lorsqu'ils parallélisent des applications, les développeurs peuvent utiliser des clusters (groupes) deblocs de threads(en). Les blocs de threads peuvent effectuer des instructions « atomiques » dans la mémoire partagée d'autres blocs de threads au sein de son groupe, appelée égalementmémoire partagée distribuée(en). La mémoire partagée distribuée peut être utilisée par un SM simultanément avec lecache L2; lorsqu'elle est utilisée pour transmettre des données entre les SM, elle peut utiliser la bande passante combinée de la mémoire partagée distribuée et du cache L2. Le nombre maximal des groupes « portables » dans un cluster est de 8, bien que le Hopper H100 puisse supporter une nombre maximal de groupes de 16 en utilisant la fonctioncudaFuncAttributeNonPortableClusterSizeAllowed, potentiellement au prix d'une réduction du nombre de blocs actifs. Avec le L2 multicasting et la mémoire partagée distribuée, la bande passante requise pour les lectures et écritures enmémoire vive dynamiqueest réduite.
Hopper améliore lethroughputenformat flottant simple précision(FP32), avec deux fois plus d'opérations FP32 par cycle et par SM que son prédécesseur. De plus, l'architecture Hopper possède de nouvelles instructions, dont l'algorithme de Smith-Waterman. Comme sur Ampere, l'arithmétique TensorFloat-32 (TF-32) est supportée. La grille de formats supportés par les deux architectures est identique.
Le Hopper H100 supporte les mémoiresHBM3etHBM2jusqu'à 80GB; le système de mémoire HBM3 supporte 3TB/s, en augmentation par rapport à Ampere A100. Au sein de l'architecture, la capacité du cache L2 et la bande passante ont été augmentées.
Hopper permet auxnoyaux de calcul(en)desCUDAd'utiliser la compression en ligne, y compris en allocation mémoire individuelle, bien que cette fonctionnalité ne réduise pas l'empreinte mémoire. Le compresseur choisira automatiquement entre plusieurs algorithmes de compression.
Un exemple complet d'allocation de mémoire compressible peut être trouvé àthe CUDA samples Github's cudaCompressibleMemory example.
Le Hopper H100 accroît la capacité du cache combiné L1, du cache de texture et de la mémoire partagée à 256 kB. Comme ses prédécesseurs, il combine les caches L1 et de texture dans un cache unifié conçu comme un « buffer coalescent ». L'attributcudaFuncAttributePreferredSharedMemoryCarveoutpeut être utilisé pour définir le découpage du cache L1. Hopper introduit des améliorations àNVLinkpar le biais d'une nouvelle génération ayant une largeur de bande de transmission globalement plus rapide.
Les applications CUDA peuvent rencontrer des interférences lorsqu'elles réalisent des opérationsfence/flushà cause de l'ordonnancement de la mémoire(en). Parce que le GPU ne peut pas savoir lors de l'exécution quelles écritures sont garanties et quelles sont celles qui sont visibles seulement par le hasard du timing, il peut attendre pour des opérations mémoire inutiles, ralentissant donc fortement les opérationsfence/flush. Par exemple, lorsqu'un noyau réalise des calculs dans la mémoire GPU tandis qu'un noyau parallèle effectue des communications avec un pair, le noyau local nettoiera (flush) ses écritures, se traduisant par des écritures NVLink ouPCIeplus lentes du noyau de communication. Avec l'architecture Hopper, grâce à la mise en oeuvre des domaines de synchronisation mémoire, le GPU peut réduire le le délai inutile par une opération defence.
L'interface de programmation(API) mathématique de l'architecture Hopper propose des fonctions dans les SM telles que__viaddmin_s16x2_relu, qui exécute la fonction surdemi-motmax(min(a+b,c),0){\displaystyle max(min(a+b,c),0)}. Dans l'algorithme de Smith-Waterman, la fonction__vimax3_s16x2_relupeut être utilisée, un max sur trois valeurs suivi d'un max avec zéro. De même, Hopper accélère l'implémentation de l'algorithme de Needleman-Wunsch.
L'architecture Hopper utilise un moteur detransformeur.
Le socket SXM5 du H100 a unthermal design power(TDP) de 700watts. En regard à son asynchronisme, l'architecture Hopper pourrait atteindre un fort taux d'utilisation et donc avoir une meilleure performance par watt.
En novembre 2019, un célèbre compteTwittera posté un tweet révélant que l'architecture succédant àAmpereserait appelée Hopper, nommée d'après l'informaticienne et contre-amiralUnited States NavyGrace Hopper, une des premières programmeuses duHarvard Mark I. Le compte précisait que Hopper serait basée sur une conception àmodule multi-puces, qui conduirait à un meilleur rendement de production et à des rebuts plus faibles.
Lors duNvidia GTC(en)2022, Nvidia a officiellement annoncé Hopper.