Garima Kochhar, Deepthi Cherlopalle, Joshua Weage. Laboratoire d’innovation en matière d’IA et de HPC, octobre 2019
Sans objet
Dans le monde du HPC d’aujourd’hui, le processeur EPYC de dernière génération d’AMD, dont le nom de code est Rome, n’a guère besoin d’être présenté. Nous avons évalué ces derniers mois des systèmes basés à Rome dans le laboratoire d’innovation HPC et IA et Dell Technologies a récemment annoncé des serveurs prenant en charge cette architecture de processeur. Ce premier article de la série Rome traite de l’architecture du processeur Rome, de la façon dont elle peut être ajustée pour les performances HPC et présente les performances initiales des micro-benchmarks. Les blogs suivants décriront les performances des applications dans les domaines de la CFD, de l’IAO, de la dynamique moléculaire, de la simulation météorologique et d’autres applications.
Rome est le processeur EPYC de 2e génération d’AMD, qui a actualisé son processeur Naples de 1re génération. Nous avons discuté de Naples dans ce blog l’année dernière.
L’une des plus grandes différences architecturales entre Naples et Rome qui profite au HPC est la nouvelle puce d’E/S à Rome. À Rome, chaque processeur est un package multi-puces comprenant jusqu’à 9 chiplets , comme illustré à la figure 1. Il existe une puce d’E/S centrale de 14 nm qui contient toutes les fonctions d’E/S et de mémoire : contrôleurs de mémoire, liaisons Infinity Fabric au sein du socket et connectivité inter-socket, et PCI-e. Il existe huit contrôleurs de mémoire par socket qui prennent en charge huit canaux de mémoire exécutant DDR4 à 3 200 MT/s. Un serveur à socket unique peut prendre en charge jusqu’à 130 voies PCIe Gen 4. Un système à deux sockets peut prendre en charge jusqu’à 160 voies PCIe Gen 4.
(Figure 1 : Boîtier multipuces Rome avec une puce d’E/S centrale et jusqu’à huit cœurs de puces)
Autour de la puce d’E/S centrale se trouvent jusqu’à huit chiplets de cœur de 7 nm. Le chiplet de base est appelé puce de cache de cœur ou CCD. Chaque CCD dispose de cœurs de processeur basés sur la micro-architecture Zen2, d’un cache L2 et d’un cache N3 de 32 Mo. Le CCD lui-même dispose de deux CCX (Core Cache Complexes), chaque CCX ayant jusqu’à quatre cœurs et 16 Mo de cache N3. La figure 2 présente un CCX.
(Figure 2 : CCX avec quatre cœurs et 16 Mo de cache L3 partagé)
Les différents modèles de processeurs Rome ont des nombres différents de cœurs, mais tous ont une puce d’E/S centrale.
Le haut de gamme est disponible avec un modèle de processeur 64 cœurs, par exemple le modèle EPYC 7702. La sortie lstopo nous montre que ce processeur a 16 CCX par socket, chaque CCX a quatre cœurs comme indiqué dans les figures 3 et 4, ce qui donne 64 cœurs par socket. 16 Mo L3 par CCX, soit 32 Mo de L3 par CCD, donnent à ce processeur un total de 256 Mo de cache L3. Notez toutefois que le cache L3 total de Rome n’est pas partagé par tous les cœurs. Le cache L3 de 16 Mo dans chaque CCX est indépendant et est partagé uniquement par les cœurs du CCX, comme illustré sur la Figure 2.
Un processeur 24 cœurs comme le modèle EPYC 7402 dispose d’un cache L3 de 128 Mo. La sortie de lstopo dans les figures 3 et 4 illustre que ce modèle a trois cœurs par CCX et 8 CCX par socket.
(Figures 3 et 4 : sortie lstopo pour les processeurs à 64 cœurs et 24 cœurs)
Quel que soit le nombre de CCD, chaque processeur Rome est logiquement divisé en quatre quadrants avec des CCD répartis aussi uniformément que possible entre les quadrants et deux canaux de mémoire dans chaque quadrant. La puce d’E/S centrale peut être considérée comme supportant logiquement les quatre quadrants du socket.
La puce centrale d’E/S à Rome permet d’améliorer les latences de mémoire par rapport à celles mesurées à Naples. En outre, elle permet de configurer le processeur comme un domaine NUMA unique, ce qui permet un accès uniforme à la mémoire pour tous les cœurs du socket. Ceci est expliqué ci-dessous.
Les quatre quadrants logiques d’un processeur Rome permettent de partitionner le processeur en différents domaines NUMA. Ce paramètre est appelé NUMA par socket ou NPS.
Lorsqu’il est disponible, NPS4 est recommandé pour le HPC, car il devrait fournir la meilleure bande passante de mémoire, les latences de mémoire les plus faibles, et nos applications ont tendance à être sensibles à NUMA. Si NPS4 n’est pas disponible, nous recommandons le NPS le plus élevé pris en charge par le modèle de processeur : NPS2, voire NPS1.
Compte tenu de la multitude d’options NUMA disponibles sur les plates-formes basées sur Rome, le BIOS PowerEdge permet deux méthodes d’énumération des cœurs différentes sous l’énumération MADT. L’énumération linéaire numérote les cœurs dans l’ordre, en remplissant un CCX, CCD, socket avant de passer au socket suivant. Sur un processeur 32c, les cœurs 0 à 31 se trouvent sur le premier socket et les cœurs 32 à 63 sur le deuxième socket. L’énumération à permutation circulaire numérote les cœurs dans toutes les régions NUMA. Dans ce cas, les cœurs pairs se trouvent sur le premier socket et les cœurs impairs sur le deuxième socket. Pour plus de simplicité, nous recommandons l’énumération linéaire pour le HPC. Reportez-vous à la Figure 5 pour obtenir un exemple d’énumération de cœurs linéaires sur un serveur 64c à deux sockets configuré dans NPS4. Sur la figure, chaque boîte de quatre cœurs est un CCX, chaque ensemble de huit cœurs contigus est un CCD.
(Figure 5 : Énumération linéaire des cœurs sur un système à deux sockets, 64c par socket, configuration NPS4 sur un modèle à 8 CCD processeurs)
Une autre option du BIOS spécifique à Rome s’appelle Preferred IO Device. Il s’agit d’un bouton de réglage important pour la bande passante et le débit des messages InfiniBand. Elle permet à la plate-forme de hiérarchiser le trafic pour un périphérique d’E/S. Cette option est disponible sur les plates-formes Rome à un et deux sockets, et l’appareil InfiniBand de la plate-forme doit être sélectionné en tant qu’appareil préféré dans le menu du BIOS pour atteindre le taux de messages maximal lorsque tous les cœurs de processeur sont actifs.
À l’instar de Naples, Rome prend également en charge l’hyper-threading ou leprocesseur logique. Pour le HPC, nous laissons cette option désactivée, mais certaines applications peuvent bénéficier de l’activation du processeur logique. Recherchez nos prochains blogs sur les études d’application de la dynamique moléculaire.
À l’instar de Naples, Rome autorise également CCX en tant que domaine NUMA. Cette option expose chaque CCX en tant que nœud NUMA. Sur un système doté de processeurs à deux sockets et de 16 CCX par processeur, ce paramètre expose 32 domaines NUMA. Dans cet exemple, chaque socket dispose de 8 CCD, soit 16 CCX. Chaque CCX peut être activé en tant que son propre domaine NUMA, ce qui donne 16 nœuds NUMA par socket et 32 dans un système à deux sockets. Pour le HPC, nous vous recommandons de laisser CCX en tant que domaine NUMA sur l’option par défaut Désactivé. L’activation de cette option devrait aider les environnements virtualisés.
À l’instar de Naples, Rome permet de régler le système en mode Performance Determinism ou Power Determinism . Dans le déterminisme des performances, le système fonctionne à la fréquence attendue pour le modèle de processeur, ce qui réduit la variabilité entre les différents serveurs. En mode déterminisme énergétique, le système fonctionne à la TDP maximale disponible du modèle de processeur. Cela amplifie les variations d’une pièce à l’autre dans le processus de fabrication, ce qui permet à certains serveurs d’être plus rapides que d’autres. Tous les serveurs peuvent consommer la puissance nominale maximale du processeur, ce qui rend la consommation électrique déterministe, mais permet une certaine variation des performances entre plusieurs serveurs.
Comme on peut s’y attendre sur les plates-formes PowerEdge, le BIOS dispose d’une méta-option appelée Profil système. La sélection du profil système Performances optimisées permet d’activer le mode Turbo Boost, de désactiver les états C et de définir le curseur de déterminisme sur Déterminisme de l’alimentation, optimisant ainsi les performances.
Beaucoup de nos lecteurs ont peut-être sauté directement à cette section, alors nous allons plonger dans le vif du sujet.
Dans le laboratoire d’innovation en matière d’IA et de HPC, nous avons créé un cluster de 64 serveurs basé à Rome, que nous appelons Minerva. En plus du cluster homogène de Minerva, nous avons pu évaluer quelques autres échantillons de processeurs Rome. Notre banc d’essai est décrit dans les tableaux 1 et 2.
(Tableau 1 : Modèles de processeurs Rome évalués dans cette étude)
Processeur | Cœurs par socket | Config | Horloge de base | TDP |
---|---|---|---|---|
7702 | 64c | 4c par CCX | 2,0 GHz | 200W |
7502 | 32c | 4c par CCX | 2,5 GHz | 180 W |
7452 | 32c | 4c par CCX | 2,35 GHz | 155 W |
7402 | 24c | 3c par CCX | 2,8 GHz | 180 W |
(Tableau 2 : banc d’essai)
Composant | Détails |
---|---|
Serveur | PowerEdge C6525 |
Processeur | Comme indiqué dans le tableau 1, deux sockets |
Mémoire | 256 Go, 16 x 16 Go, 3 200 MT/s, DDR4 |
Interconnexion | ConnectX-6 Mellanox Infini Band HDR100 |
Système d’exploitation | Red Hat Enterprise Linux 7,6 |
Noyau | 3.10.0.957.27.2.e17.x86_64 |
Disque | Module M.2 de disque SSD SATA de 240 Go |
Les tests de bande passante de la mémoire sur Rome sont présentés sur la Figure 6. Ces tests ont été exécutés en mode NPS4. Nous avons mesuré une bande passante mémoire de ~270 à 300 Go/s sur notre serveur PowerEdge C6525 à deux sockets en utilisant tous les cœurs du serveur sur les quatre modèles de processeurs répertoriés dans le tableau 1. Lorsqu’un seul cœur est utilisé par CCX, la bande passante de la mémoire système est ~9-17 % plus élevée que celle mesurée avec tous les cœurs.
La plupart des charges applicatives HPC souscrivent entièrement tous les cœurs du système, ou les centres HPC s’exécutent en mode haut débit avec plusieurs tâches sur chaque serveur. Par conséquent, la bande passante de la mémoire all-core est la représentation la plus précise des capacités de bande passante de la mémoire et de bande passante mémoire par cœur du système.
La figure 6 représente également la bande passante de la mémoire mesurée sur la plate-forme EPYC Naples de génération précédente, qui prenait également en charge huit canaux de mémoire par socket, mais fonctionnait à 2 667 MT/s. La plate-forme Rome fournit une bande passante de mémoire totale de 5 % à 19 % supérieure à celle de Naples, principalement en raison de la mémoire plus rapide de 3 200 MT/s. Même avec 64c par socket, le système Rome peut fournir plus de 2 Go/s/cœur.
En comparant les différentes configurations NPS, une bande passante de mémoire ~13 % supérieure a été mesurée avec NPS4 par rapport à NPS1, comme le montre la Figure 7.
(Figure 6 : Bande passante de la mémoire de la triade NPS4 STREAM à deux sockets)
(Figure 7 : Bande passante de la mémoire NPS1, NPS2 et NPS4)
La Figure 8 représente la bande passante InfiniBand monocœur pour les tests unidirectionnels et bidirectionnels. Le banc d’essai a utilisé HDR100 s’exécutant à 100 Gbit/s, et le graphique montre les performances de fréquence de ligne attendues pour ces tests.
Figure 8 Bande passante InfiniBand (monocœur)
Figure 9 Taux de messages InfiniBand (tous les cœurs)
Des tests de taux de messages ont ensuite été menés en utilisant tous les cœurs d’un socket dans les deux serveurs testés. Lorsque l’option Preferred IO est activée dans le BIOS et que l’adaptateur ConnectX-6 HDR100 est configuré en tant que périphérique préféré, le taux de messages sur tous les cœurs est nettement plus élevé que lorsque l’option Preferred IO n’est pas activée, comme illustré sur la Figure 9. Cela illustre l’importance de cette option de BIOS lors du réglage pour le HPC et en particulier pour l’évolutivité des applications à plusieurs nœuds.
La micro-architecture Rome peut retirer 16 DP FLOP/cycle, soit le double de celle de Naples qui était de 8 FLOPS/cycle. Cela donne à Rome 4 fois le pic théorique de FLOPS par rapport à Naples, 2 fois plus de la capacité de virgule flottante améliorée et 2 fois plus de cœurs (64c contre 32c). La figure 10 présente les résultats HPL mesurés pour les quatre modèles de processeurs Rome que nous avons testés, ainsi que nos résultats précédents d’un système basé sur Naples. L’efficacité du HPL Rome est indiquée comme valeur en pourcentage au-dessus des barres sur le graphique et est plus élevée pour les modèles de processeur à TDP inférieur.
Les tests ont été exécutés en mode déterminisme de l’alimentation, et un écart de performances de ~5 % a été mesuré sur 64 serveurs configurés de manière identique. Les résultats ici se situent donc dans cette bande de performances.
(Figure 10 HPL à serveur unique dans NPS4)
Des tests HPL à plusieurs nœuds ont ensuite été exécutés et ces résultats sont présentés sur la Figure 11. L’efficacité HPL du processeur EPYC 7452 reste supérieure à 90 % sur une échelle de 64 nœuds, mais les baisses d’efficacité, qui sont passées de 102 % à 97 % et jusqu’à 99 %, nécessitent une évaluation plus approfondie
(Figure 11 : HPL à plusieurs nœuds, double socket, EPYC 7452 sur HDR100 InfiniBand)
Les premières études de performances sur les serveurs basés à Rome montrent les performances attendues pour notre premier ensemble de points de référence HPC. Le paramétrage du BIOS est important lors de la configuration pour obtenir les meilleures performances. Des options de réglage sont disponibles dans notre profil de charge applicative HPC du BIOS, qui peut être configuré en usine ou défini à l’aide des utilitaires de gestion des systèmes Dell EMC.
Le laboratoire d’innovation en matière d’IA et de HPC dispose d’un nouveau cluster PowerEdge Minerva basé à Rome sur 64 serveurs. Surveillez cet espace pour les blogs suivants qui décrivent les études de performances d’application sur notre nouveau cluster Minerva.