Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
developpement:activites:qualification:c4140 [2019/07/31 17:32]
equemene [Le C4140 : la puissance de 1 baie dans 1U, et de quoi effacer les autres C41]
developpement:activites:qualification:c4140 [2019/08/02 17:09] (Version actuelle)
equemene
Ligne 9: Ligne 9:
 ===== Introduction ===== ===== Introduction =====
  
-Tester ​toute à la fois la successeure de la Nvidia Tesla P100 et le nouveau "​noeud"​ GPU de Dell, tel était l'​objectif de cette mise à disposition par l'​intégrateur. Nous verrons que la Tesla V100 est bien le "​monstre"​ que certains ont déjà pu manipuler en France depuis 2 ans. Cependant, avec son intégration dans le C4140 qui en héberge 4, c'est un sacré budget qu'il faut débourser pour s'​offrir la machine la plus puissante qu'il m'ait été donné de tester. Encore faut-il en avoir l'​usage face aux autres solutions du marché. C'est ce que nous allons explorer...+Tester ​tout à la fois la successeure de la Nvidia Tesla P100 et le nouveau "​noeud"​ GPU de Dell, tel était l'​objectif de cette mise à disposition par l'​intégrateur. Nous verrons que la Tesla V100 est bien le "​monstre"​ que certains ont déjà pu manipuler en France depuis 2 ans. Cependant, avec son intégration dans le C4140 qui en héberge 4, c'est un sacré budget qu'il faut débourser pour s'​offrir la machine la plus puissante qu'il m'ait été donné de tester. Encore faut-il en avoir l'​usage face aux autres solutions du marché. C'est ce que nous allons explorer...
  
 ===== Un peu d'​histoire ===== ===== Un peu d'​histoire =====
Ligne 19: Ligne 19:
 Il y a 6 ans, je recevais en test pour la première fois un C410X et son fidèle Robin (ou Batman, tout dépend de quel côté on se place) C6100. La machine était impressionnante : dans 3U, la possibilité de mettre 16 GPGPU. A l'​époque,​ Nvidia, dans sa génération Fermi, "​offrait"​ 3 solutions : les Tesla M2050, Tesla M2070 et Tesla M2090. Des cartes comparables,​ essentiellement différentes par le nombre de cudacores (448 pour les deux premières) et 512 pour la dernière, des fréquences légèrement différentes également (de 1150 à 1300 MHz). Déjà, à l'​époque,​ nous avions pu "​juger"​ de l'​opacité des tarifs de Nvidia (3GB de RAM à 400$). ​ Il y a 6 ans, je recevais en test pour la première fois un C410X et son fidèle Robin (ou Batman, tout dépend de quel côté on se place) C6100. La machine était impressionnante : dans 3U, la possibilité de mettre 16 GPGPU. A l'​époque,​ Nvidia, dans sa génération Fermi, "​offrait"​ 3 solutions : les Tesla M2050, Tesla M2070 et Tesla M2090. Des cartes comparables,​ essentiellement différentes par le nombre de cudacores (448 pour les deux premières) et 512 pour la dernière, des fréquences légèrement différentes également (de 1150 à 1300 MHz). Déjà, à l'​époque,​ nous avions pu "​juger"​ de l'​opacité des tarifs de Nvidia (3GB de RAM à 400$). ​
  
-Le C410X était un boitier à l'​alimentation autonome, effroyablement bruyant, disposant de 8 entrées/​sorties PCIe. Dans la lignée du S0170 de Nvidia et sa liaison PCI Express sortante, Dell souhaitait offrir à ses clients une solution polyvalente permettant d'​associer des GPGPU à des serveurs, pour tirer profit des (rares) codes de l'​époque supportant le multi-gpu. Au final et malgré de nombreux tests, je n'ai disposé que de systèmes particulièrement instables, aux connecteurs très sensibles, avec souvent ​la nécessité, en cas de plantage d'un serveur avec un GPU, de redémarrer l'​ensemble des 4 serveurs pour à nouveau réinitialiser toutes les cartes. Certes, ​Le matériel mis à disposition avait beaucoup voyagé, avait été largement démonté (voire dépouillé) de certains composants. Cependant, après de longues heures de mise à jours de tous les composants, il était possible de disposer d'un système exploitable,​ mais uniquement avec des cartes M2070 et M2090.+Le C410X était un boitier à l'​alimentation autonome, effroyablement bruyant, disposant de 8 entrées/​sorties PCIe. Dans la lignée du S0170 de Nvidia et sa liaison PCI Express sortante, Dell souhaitait offrir à ses clients une solution polyvalente permettant d'​associer des GPGPU à des serveurs, pour tirer profit des (rares) codes de l'​époque supportant le multi-gpu. Au final et malgré de nombreux tests, je n'ai disposé que de systèmes particulièrement instables, aux connecteurs très sensibles ​; il était ​souvent ​nécessaire, en cas de plantage d'un serveur avec un GPU, de redémarrer l'​ensemble des 4 serveurs pour à nouveau réinitialiser toutes les cartes. Certes, ​le matériel mis à disposition avait beaucoup voyagé, avait été largement démonté (voire dépouillé) de certains composants. Cependant, après de longues heures de mise à jour de tous les composants, il était possible de disposer d'un système exploitable,​ mais uniquement avec des cartes M2070 et M2090.
  
-L'​effroyable point faible du C410X ne nous fut révélé que quelques mois plus tard lorsque Nvidia sortit ses premiers circuits Kepler pour le calcul, avec les séries K20 et K40. Alors qu'il était tout à fait possible de rendre opérationnelle une Tesla K20 dans un logement de C410X, ce fut malheureusement la dernière. La K40 de format comparable n'​était pas reconnue et la K80 ne disposait pas de l'​alimentation suffisante. Autre souci de taille, la concurrence : déjà, à l'​époque,​ certains codes de calcul se satisfaisaient "très bien" de la simple précision ; ainsi, les cartes de Gamer (GTX 780 en tête) offraient un rapport performance/​prix très supérieur aux modèles Tesla (de l'​ordre de 5 pour 1). Pour finir sur le bilan du C410X, il y avait une limitation qui, finalement, balayait tout l'​intérêt de l'​objet : la possibilité de pouvoir associer tel au tel GPGPU à telle ou telle machine. En fait, la matrice d'​association noeud/GPGPU n'​offre que quelques possibilités et cela passe nécessairement par une arrêt complet et un redémarrage de toute l'​infrastructure : IPMI devient alors le commis indispensable pour son exploitation.+L'​effroyable point faible du C410X ne nous fut révélé que quelques mois plus tard lorsque Nvidia sortit ses premiers circuits Kepler pour le calcul, avec les séries K20 et K40. Alors qu'il était tout à fait possible de rendre opérationnelle une Tesla K20 dans un logement de C410X, ce fut malheureusement la dernière. La K40 de format comparable n'​était pas reconnue et la K80 ne disposait pas de l'​alimentation suffisante. Autre souci de taille, la concurrence : déjà, à l'​époque,​ certains codes de calcul se satisfaisaient "très bien" de la simple précision ; ainsi, les cartes de Gamer (GTX 780 en tête) offraient un rapport performance/​prix très supérieur aux modèles Tesla (de l'​ordre de 5 pour 1). Pour finir sur le bilan du C410X, il y avait une limitation qui, finalement, balayait tout l'​intérêt de l'​objet : la possibilité de pouvoir associer tel ou tel GPGPU à telle ou telle machine. En somme, la matrice d'​association noeud/GPGPU n'​offre que quelques possibilités et cela passe nécessairement par une arrêt complet et un redémarrage de toute l'​infrastructure : IPMI devient alors le commis indispensable pour son exploitation.
  
 Après 6 ans et une escapade grenobloise,​ le C410x et son fidèle C6100 sont revenus au Centre Blaise Pascal. Longtemps équipé de seulement deux Tesla K20 et deux faux jumeaux M2070 et M2090, elle s'est vue amendée de 4 nouvelles cartes déclassées par le centre de calcul. Sa stabilité reste précaire mais suffisante pour de petites tâches, tant que les circuits Fermi les supportent. Après 6 ans et une escapade grenobloise,​ le C410x et son fidèle C6100 sont revenus au Centre Blaise Pascal. Longtemps équipé de seulement deux Tesla K20 et deux faux jumeaux M2070 et M2090, elle s'est vue amendée de 4 nouvelles cartes déclassées par le centre de calcul. Sa stabilité reste précaire mais suffisante pour de petites tâches, tant que les circuits Fermi les supportent.
Ligne 27: Ligne 27:
 ==== Le C4130, et le malheur du Xeon Phi ==== ==== Le C4130, et le malheur du Xeon Phi ====
  
-Conscient que les liens externes PCIe ne posaient ​que des difficultés,​ et que le contrôle de la matrice noeud/GPU n'​était pas assez "​granulée",​ Dell a proposé son C4130 : une machine bi-socket, 1U, équipée directement de 4 GPU (ou 4 Xeon Phi Knight Corner). J'ai alors reçu en test la version équipée de (seulement) 2 Xeon Phi. Evidemment, l'​intégration ne permettait aucune fantaisie sur les accélérateurs possibles : la matrice de compatibilité était d'une pauvreté assez accablante. Dans cette approche, la difficulté de prise en main était plutôt à imputer à Intel et son accélérateur si difficilement exploitable qu'il en devient inutilisable. Pour exploiter un Xeon Phi, il fallait déjà installer un environnement spécifique permettant de démarrer un OS sur la carte accélératrice. Une fois cet environnement démarré, 3 options s'​offraient à l'​utilisateur pour exploiter le Xeon Phi : cross-compiler son code et l'​exécuter nativement sur l'​accélérateur. C'est là que beaucoup ont découvert que 60 veaux à 1.25GHz sont moins efficaces que des double Sandy Bridge 8 coeurs à 3 GHz. Il y avait aussi, avec OpenMP4 (et évidemment le compilateur Intel), la possibilité d'​exploiter le mode "​offload"​ et la "​décharge"​ d'un calcul sur l'​accélérateur. Intéressant mais exigeant un régime de parallélisme optimal supérieur à 960 (16*60, comme c'est bizarre)... La troisième option, que j'ai largement exploitée, consistait à utiliser l'​implémentation OpenCL fournie par Intel. Très efficace, ​tellement ​que c'est avec elle que j'ai obtenu, avec mes tests "​maison",​ les meilleures performances. Le Xeon Phi était même, du temps des IvyBridge et des Kepler, supérieur à ces derniers si le régime de parallélisme était entre 1000 et 2000. Encore fallait-il s'y intéresser... Pour en revenir au C4130, il fallait donc, pour l'​exploiter efficacement en OpenMP ou en OpenCL, s'​adresser aux deux périphériques indépendamment,​ ce qui rendait le code, finalement, ​complètement spécifique à cette infrastructure. A l'​époque,​ le soufflet du Xeon Phi était retombé : tous (ou presque) avaient expérimenté amèrement les performances catastrophiques sur leurs codes sans modification.+Conscient que les liens externes PCIe n'​engendraient ​que des difficultés,​ et que le contrôle de la matrice noeud/GPU n'​était pas assez "​granulée",​ Dell a proposé son C4130 : une machine bi-socket, 1U, équipée directement de 4 GPU (ou 4 Xeon Phi Knight Corner). J'ai alors reçu en test la version équipée de (seulement) 2 Xeon Phi. Evidemment, l'​intégration ne permettait aucune fantaisie sur les accélérateurs possibles : la matrice de compatibilité était d'une pauvreté assez déprimante. Dans cette approche, la difficulté de prise en main était plutôt à imputer à Intel et son accélérateur si difficilement exploitable qu'il en devient inutilisable. Pour exploiter un Xeon Phi, il fallait déjà installer un environnement spécifique permettant de démarrer un OS sur la carte accélératrice. Une fois cet environnement démarré, 3 options s'​offraient à l'​utilisateur pour exploiter le Xeon Phi : cross-compiler son code et l'​exécuter nativement sur l'​accélérateur. C'est là que beaucoup ont découvert que 60 veaux à 1.25GHz sont moins efficaces que des double Sandy Bridge 8 coeurs à 3 GHz. Il y avait aussi, avec OpenMP4 (et évidemment le compilateur Intel), la possibilité d'​exploiter le mode "​offload"​ et la "​décharge"​ d'un calcul sur l'​accélérateur. Intéressant mais exigeant un régime de parallélisme optimal supérieur à 960 (16*60, comme c'est bizarre)... La troisième option, que j'ai largement exploitée, consistait à utiliser l'​implémentation OpenCL fournie par Intel. Très efficace, ​si bien que c'est avec elle que j'ai obtenu, avec mes tests "​maison",​ les meilleures performances. Le Xeon Phi était même, du temps des IvyBridge et des Kepler, supérieur à ces derniers si le régime de parallélisme était entre 1000 et 2000. Encore fallait-il s'y intéresser... Pour en revenir au C4130, il fallait donc, pour l'​exploiter efficacement en OpenMP ou en OpenCL, s'​adresser aux deux périphériques indépendamment,​ ce qui rendait ​finalement ​le code complètement spécifique à cette infrastructure. A l'​époque,​ le soufflet du Xeon Phi était retombé : tous (ou presque) avaient expérimenté amèrement les performances catastrophiques sur leurs codes sans modification.
  
 Au final, il n'y eut jamais la masse critique d'​utilisateurs ou le temps ingénieur disponible pour pleinement exploiter cette approche. Le boitier, quant à lui, avait montré toute la pertinence d'une énorme intégration,​ mais le coût d'​entrée (1 chassis et 4 accélérateurs) restait pour beaucoup rédhibitoire dans un marché où le GPGPU professionnel dépassait les 5000€, fixant l'​ensemble à plus de 25000€. Parallèlement,​ d'​autres solutions largement étaient plus polyvalentes ; les séries R720, R730 puis R740 offraient (et offrent) de 2 à 3 emplacements GPU ou GPGPU, avec comme perspective d'y placer (sans la garantie constructeur mais avec du papier sulfurisé) au moins 2 GPU de gamer 10 fois moins onéreux. Au final, il n'y eut jamais la masse critique d'​utilisateurs ou le temps ingénieur disponible pour pleinement exploiter cette approche. Le boitier, quant à lui, avait montré toute la pertinence d'une énorme intégration,​ mais le coût d'​entrée (1 chassis et 4 accélérateurs) restait pour beaucoup rédhibitoire dans un marché où le GPGPU professionnel dépassait les 5000€, fixant l'​ensemble à plus de 25000€. Parallèlement,​ d'​autres solutions largement étaient plus polyvalentes ; les séries R720, R730 puis R740 offraient (et offrent) de 2 à 3 emplacements GPU ou GPGPU, avec comme perspective d'y placer (sans la garantie constructeur mais avec du papier sulfurisé) au moins 2 GPU de gamer 10 fois moins onéreux.
Ligne 33: Ligne 33:
 ===== Le C4140, comment l'​exploiter à distance ? ===== ===== Le C4140, comment l'​exploiter à distance ? =====
  
-Pour la première fois, le matériel mis-à-disposition n'est pas livré : les ours polaires nous remercient de ce bilan carbine ​! Pourtant, j'ai toujours attaché un soin particulier à pouvoir installer et exploiter mes propres outils sur les machines pour les évaluer. Si les cartes de supervision (même certaines très anciennes) offrent la possibilité d'​avoir une console déportée complète (avec un mappage clavier assez pénible), toutes ne mettent pas à disposition les périphériques virtuels. Grâce à cet outil très utile, il est possible d'​associer n'​importe quelle clé USB ou image ISO au démarrage de la machine distante. Nous allons expérimenter ce "​service"​ avec deux approches, la première par SIDUS, la seconde par une bonne vieille installation de la dernière Debian sortie en juillet 2019, la Buster.+Pour la première fois, le matériel mis à disposition n'est pas livré : les ours polaires nous remercient de ce bilan carbone ​! Pourtant, j'ai toujours attaché un soin particulier à pouvoir installer et exploiter mes propres outils sur les machines pour les évaluer. Si les cartes de supervision (même certaines très anciennes) offrent la possibilité d'​avoir une console déportée complète (avec un mappage clavier assez pénible), toutes ne mettent pas à disposition les périphériques virtuels. Grâce à cet outil très utile, il est possible d'​associer n'​importe quelle clé USB ou image ISO au démarrage de la machine distante. Nous allons expérimenter ce "​service"​ avec deux approches, la première par SIDUS, la seconde par une bonne vieille installation de la dernière Debian sortie en juillet 2019, la Buster.
  
 ==== SIDUS over Internet : pour ne plus jamais installer d'OS ==== ==== SIDUS over Internet : pour ne plus jamais installer d'OS ====
  
-Au delà du simple test de matériel, la mise à disposition d'un C4140 dans les locaux de Dell à Austin a donc été l'​occasion de tester l'​approche [[developpement:​productions:​sidus|SIDUS (Single Instance Distributing Universal System)]] distante. Dans sa dixième année d'​exploitation au Centre Blaise Pascal à l'​ENS-Lyon,​ dans sa huitième année au mésocentre lyonnais PSMN hébergé à l'​ENS-Lyon sur plus de 500 noeuds, cette approche met à disposition une racine de système d'un unique NFS. Cela fonctionne comme avec un LiveCD en réseau, mais c'est reconfigurable "à chaud" et cela n'​impose pas de "boot storm" au démarrage d'un cluster complet.+Au-delà du simple test de matériel, la mise à disposition d'un C4140 dans les locaux de Dell à Austin a donc été l'​occasion de tester l'​approche [[developpement:​productions:​sidus|SIDUS (Single Instance Distributing Universal System)]] distante. Dans sa dixième année d'​exploitation au Centre Blaise Pascal à l'​ENS-Lyon,​ dans sa huitième année au mésocentre lyonnais PSMN hébergé à l'​ENS-Lyon sur plus de 500 noeuds, cette approche met à disposition une racine de système d'un unique NFS. Cela fonctionne comme avec un LiveCD en réseau, mais c'est reconfigurable "à chaud" et cela n'​impose pas de "boot storm" au démarrage d'un cluster complet.
  
-J'ai toujours détesté cuisiner chez les autres : en effet, dans un environnement "​maîtrisé"​ (au minimum), les facteurs de variabilité dans les expériences sont légions. Mais exploiter un OS installé par un tiers, qui plus est, un intégrateur avec ses recettes "​maison",​ cela ne me convenait pas spécialement. Dell m'a alors proposé la mise à disposition directe d'une machine avec son Idrac pour y installer ce que je voulais. Dans mon optique, c'​était aussi l'​occasion de tester SIDUS dans un environnement plutôt très contraint.+J'ai toujours détesté cuisiner chez les autres : en effet, dans un environnement "​maîtrisé"​ (au minimum), les facteurs de variabilité dans les expériences sont légion. Mais exploiter un OS installé par un tiers, qui plus est, un intégrateur avec ses recettes "​maison",​ cela ne me convenait pas spécialement. Dell m'a alors proposé la mise à disposition directe d'une machine avec son Idrac pour y installer ce que je voulais. Dans mon optique, c'​était aussi l'​occasion de tester SIDUS dans un environnement plutôt très contraint.
  
-La première étape de SIDUS est de télécharger les noyau et initrd. Avec l'​outil iPXE, il est possible de paramétrer simplement une image ISO, disquette ou clé USB pour pointer directement vers le bon serveur HTTP. Une fois ces composants téléchargés,​ le système démarre, crée le tunnel chiffré correspondant et monte le NFS à travers Internet. Si le premier démarrage a été laborieux, c'est essentiellement à cause des mécanismes de filtrage mis en place par Dell : en effet, tout montage NFS entraîne de nombreux accès réseau pour la récupération récurrente des attributs de fichiers et force est de constater que la limitation du réseau sortant en a été le principal obstacle à l'​exploitation. Comme socle logiciel, j'​avais choisi la Debian Stretch mais associée aux modules Nvidia et CUDA rétroportés. En effet, les circuits Volta et Turing exigent une version supérieure à la 390 embarquée dans les Debian Stretch. Les paquets rétroportés offrent une version 418 suffisante pour exploiter la machine. Pour l'​environnement CUDA, le 9.2 est proposé en rétroportage,​ remplaçant le 8.0 standard. L'​approche était fonctionnelle,​ mais incroyablement ralentie.+La première étape de SIDUS est de télécharger les noyau et initrd. Avec l'​outil iPXE, il est possible de paramétrer simplement une image ISO, disquette ou clé USB pour pointer directement vers le bon serveur HTTP. Une fois ces composants téléchargés,​ le système démarre, crée le tunnel chiffré correspondant et monte le NFS à travers Internet. Si le premier démarrage a été laborieux, c'est essentiellement à cause des mécanismes de filtrage mis en place par Dell : en effet, tout montage NFS entraîne de nombreux accès réseau pour la récupération récurrente des attributs de fichiers ​et force est de constater que la limitation du réseau sortant en a été le principal obstacle à l'​exploitation. Comme socle logiciel, j'​avais choisi la Debian Stretch mais associée aux modules Nvidia et CUDA rétroportés. En effet, les circuits Volta et Turing exigent une version supérieure à la 390 embarquée dans les Debian Stretch. Les paquets rétroportés offrent une version 418 suffisante pour exploiter la machine. Pour l'​environnement CUDA, le 9.2 est proposé en rétroportage,​ remplaçant le 8.0 standard. L'​approche était fonctionnelle,​ mais incroyablement ralentie.
  
-==== Retour à un système local ====+==== Retour à un système local : une Debina Buster ​====
  
 Si les premiers tests élémentaires ont été menés directement sur cette approche SIDUS, l'​exploitation d'​outils nécessitant de nombreux accès à des fichiers rendait son utilisation laborieuse. J'ai donc préféré déployer la dernière version de Debian, la Buster, fraichement sortie début juillet. Les caractéristiques de l'​environnement Nvidia étaient comparables,​ notamment pour les versions des pilotes. Si les premiers tests élémentaires ont été menés directement sur cette approche SIDUS, l'​exploitation d'​outils nécessitant de nombreux accès à des fichiers rendait son utilisation laborieuse. J'ai donc préféré déployer la dernière version de Debian, la Buster, fraichement sortie début juillet. Les caractéristiques de l'​environnement Nvidia étaient comparables,​ notamment pour les versions des pilotes.
Ligne 56: Ligne 56:
 ===== Le banc d'​essai logiciel : pour se démarquer du LinPack ===== ===== Le banc d'​essai logiciel : pour se démarquer du LinPack =====
  
-Evaluer la performance d'un système est une science. Et sa principale difficulté revient surtout à rendre la comparaison pertinente d'un système à l'​autre. Ici, il s'agit d'​évaluer la performance d'un accélérateur,​ la Tesla V100 et si possible la performance combinée de 4 d'​entre elles dans un unique noeud. Nous pourrions nous rapprocher du Top 500 et son LinPack mais j'​invite ​chacu d'​entre vous consulter les fils de discussion sur le sujet chez Nvidia. Nous pourrions aussi exploiter les suite Phoronix mais lesquelles choisir ? +Evaluer la performance d'un système est une science. Et sa principale difficulté revient surtout à rendre la comparaison pertinente d'un système à l'​autre. Ici, il s'agit d'​évaluer la performance d'un accélérateur,​ la Tesla V100 et si possible la performance combinée de 4 d'​entre elles dans un unique noeud. Nous pourrions nous rapprocher du Top 500 et son LinPack mais j'​invite ​chacun ​d'​entre vous à consulter les fils de discussion sur le sujet chez Nvidia. Nous pourrions aussi exploiter les suites ​Phoronix mais lesquelles choisir ? 
  
-Nous avons choisi d'​exploiter les programmes de test développés depuis 10 ans au CBP (en gros depuis que j'ai commencé à exploiter une antique Tesla C1060) et explorant les segments ​les plus classiques des machines de calcul :+Nous avons choisi d'​exploiter les programmes de test développés depuis 10 ans au CBP (en gros depuis que j'ai commencé à exploiter une antique Tesla C1060) et explorant les fonctionnalités ​les plus classiques des machines de calcul :
   * le calcul matriciel (avec les fameuses fonctions xGEMM de la librairie BLAS ou un test "​maison"​ exploitant 5 fonctions BLAS),   * le calcul matriciel (avec les fameuses fonctions xGEMM de la librairie BLAS ou un test "​maison"​ exploitant 5 fonctions BLAS),
   * le parallélisme "gros grain" avec un Pi par Monte Carlo dont l'​essentiel de la "​charge"​ repose sur les générateurs de nombres aléatoires entiers (très pratique pour évaluer la différence de performance lorsque des opérations de comparaison et multiplication sont faites sur des entiers ou des flottants, sur 32 ou 64 bits),   * le parallélisme "gros grain" avec un Pi par Monte Carlo dont l'​essentiel de la "​charge"​ repose sur les générateurs de nombres aléatoires entiers (très pratique pour évaluer la différence de performance lorsque des opérations de comparaison et multiplication sont faites sur des entiers ou des flottants, sur 32 ou 64 bits),
Ligne 75: Ligne 75:
 ==== Coup d'oeil dans le rétro : quels challengers pour la Tesla V100 ==== ==== Coup d'oeil dans le rétro : quels challengers pour la Tesla V100 ====
  
-Avant de lancer notre banc de test, quels étaient nos "​TOP1"​ dans la computhèque de 77 GPU et 42 CPU différents que nous avons au CBP ? La RTX 2080 Ti, arrivée en octobre 2018 au CBP, avait balayé la concurrence,​ reléguant la GTX 1080 Ti à presque un facteur 2. Elle était première sur presque tous les tests, mais seulement en simple précision. En double précision, longtemps, la Tesla P100 n'​avait pas de concurrence. Qu'il s'​agisse d'un xGEMM, d'un Pi Monte Carlo ou d'un N-Corps, elle reléguait les GTX et RTX à un facteur 10. La grosse surprise est venue au printemps 2019 avec la Radeon VII. Bien que moins dotée en coeurs que la Vega 64 (3840 au lieu de 4096) et avec une fréquence légèrement supérieure,​ la Radeon VII n'​apparaissait pas aussi impressionnante ​que cela jusqu'​à ce qu'​elle soit exploitée sur le test N-Corps : elle pulvérisait la Tesla P100 d'un facteur 2. Test aussi intéressant : le "​postillonneur"​ et ses opérations atomiques. Déjà, la Vega 64 se trouvait supérieure à toutes les cartes. Là, la Radeon VII règne également sans partage.+Avant de lancer notre banc de test, quels étaient nos "​TOP1"​ dans la computhèque de 77 GPU et 42 CPU différents que nous avons au CBP ? La RTX 2080 Ti, arrivée en octobre 2018 au CBP, avait balayé la concurrence,​ reléguant la GTX 1080 Ti à presque un facteur 2. Elle était première sur presque tous les tests, mais seulement en simple précision. En double précision, longtemps, la Tesla P100 n'​avait pas de challenger crédible. Qu'il s'​agisse d'un xGEMM, d'un Pi Monte Carlo ou d'un N-Corps, elle reléguait les GTX et RTX à un facteur 10. La grosse surprise est venue au printemps 2019 avec la Radeon VII. Bien que moins dotée en coeurs que la Vega 64 (3840 au lieu de 4096) et avec une fréquence légèrement supérieure,​ la Radeon VII n'​apparaissait pas aussi performante ​que cela jusqu'​à ce qu'​elle soit exploitée sur le test N-Corps : elle pulvérisait la Tesla P100 d'un facteur 2. Test aussi intéressant : le "​postillonneur"​ et ses opérations atomiques. Déjà, la Vega 64 se trouvait supérieure à toutes les cartes. Là, la Radeon VII règne également sans partage.
  
 ==== Comment la Tesla Volta V100 va-t-elle se comporter face à ces rivales de moins d'un an ? ==== ==== Comment la Tesla Volta V100 va-t-elle se comporter face à ces rivales de moins d'un an ? ====
Ligne 95: Ligne 95:
 === BLAS : pour élargir le spectre des fonctions algébriques === === BLAS : pour élargir le spectre des fonctions algébriques ===
  
-Le test suivant ​intégre ​5 fonctions BLAS (xGEMV, xTRSV, xAXPY, xDNRM2, xSWAP pour les curieux) assemblées pour offrir un test consistant. Les familiers auront ​reconnus ​notamment la multiplication matrice-vecteur et la résolution de systèmed triangulaired. La Tesla V100 reste la première devant toutes les autres cartes, avec 25% de plus que la RTX 2080 Ti et plus d'un facteur 2 par rapport à la Tesla P100 (ce qui reste parfaitement cohérent). Les processeurs les plus performants restent au sol, avec des performances au moins 20 fois inférieures. Confirmation donc : les Tesla en général (et la V100 en particulier) règnent sans partage sur le calcul matriciel.+Le test suivant ​intègre ​5 fonctions BLAS (xGEMV, xTRSV, xAXPY, xDNRM2, xSWAP pour les curieux) assemblées pour offrir un test consistant. Les familiers auront ​reconnu ​notamment la multiplication matrice-vecteur et la résolution de système triangulaire. La Tesla V100 reste la première devant toutes les autres cartes, avec 25% de plus que la RTX 2080 Ti et plus d'un facteur 2 par rapport à la Tesla P100 (ce qui reste parfaitement cohérent). Les processeurs les plus performants restent au sol, avec des performances au moins 20 fois inférieures. Confirmation donc : les Tesla en général (et la V100 en particulier) règnent sans partage sur le calcul matriciel.
  
 {{ :​developpement:​activites:​qualification:​xtrsv_c4140.png?​600 |}} {{ :​developpement:​activites:​qualification:​xtrsv_c4140.png?​600 |}}
Ligne 115: Ligne 115:
 === Splutter : une exploitation "​atomique"​ moins efficace === === Splutter : une exploitation "​atomique"​ moins efficace ===
  
-Le "​postillonneur"​ se propose ​lui de comparer les accès mémoire en exploitant les fonctions atomiques d'​incrémentation dans les zones mémoire. Dans notre test, nous manipulons un espace de 2GB dans lesquels nous "​tapons"​ aléatoirement. Ici, première suprise : non seulement la Radeon VII conserve sa place mais reste deux fois plus performante que les Tesla P100 ou V100. Pire, la Tesla V100 se retrouve légèrement moins efficace que la Tesla P100. Pour la première fois dans nos tests, la Tesla V100 est derrière.+Le "​postillonneur"​ se propose de comparer les accès mémoire en exploitant les fonctions atomiques d'​incrémentation dans les zones mémoire. Dans notre test, nous manipulons un espace de 2GB dans lesquels nous "​tapons"​ aléatoirement. Ici, première suprise : non seulement la Radeon VII conserve sa place mais reste deux fois plus performante que les Tesla P100 ou V100. Pire, la Tesla V100 se retrouve légèrement moins efficace que la Tesla P100. Pour la première fois dans nos tests, la Tesla V100 est derrière.
  
 C'est donc là que s'​arrête les tests "​maison"​ que j'​exploite chaque fois que je souhaite comparer les "​moteurs"​ de calcul scientifique. La Tesla V100 tient donc toutes ses promesses : elle offre un gain de performances cohérent par rapport à son aînée, la Tesla P100 et elle reste complètement hors d'​atteinte de ses consoeurs dédiées au jeu. Seule la Radeon VII la talonne en double précision sur un test et la surclasse sur un autre. C'est donc là que s'​arrête les tests "​maison"​ que j'​exploite chaque fois que je souhaite comparer les "​moteurs"​ de calcul scientifique. La Tesla V100 tient donc toutes ses promesses : elle offre un gain de performances cohérent par rapport à son aînée, la Tesla P100 et elle reste complètement hors d'​atteinte de ses consoeurs dédiées au jeu. Seule la Radeon VII la talonne en double précision sur un test et la surclasse sur un autre.
Ligne 125: Ligne 125:
 === Gromacs : des performances à (toujours) relativiser === === Gromacs : des performances à (toujours) relativiser ===
  
-Commençons par Gromacs. Depuis plusieurs années, ce logiciel de dynamique moléculaire a su tirer partie des GPU. Nvidia proposait même à chacun de refaire ses tests chez soi : https://​www.nvidia.com/​en-us/​data-center/​gpu-accelerated-applications/​gromacs/​ et c'est ce test là que nous allons exécuter.+Commençons par Gromacs. Depuis plusieurs années, ce logiciel de dynamique moléculaire a su tirer partie des GPU. Nvidia proposait même à chacun de refaire ses tests chez soi : https://​www.nvidia.com/​en-us/​data-center/​gpu-accelerated-applications/​gromacs/​ et c'est ce test-là que nous allons exécuter.
  
-Cependant, avant de nous précipiter,​ les performances (et leur comparaison) nécessitent un peu de recul, notamment sur le fait que Gromacs est (aussi) un programme hybride exploitant très efficacement les différents coeurs d'un noeud ou les différents noeuds d'un cluster ! L'​introduction d'un GPU dans le "​système",​ suggérait une légitime interrogation : quel est (réellement) l'​apport de l'​accélérateur ? Pour être le plus "​honnête"​ possible, les tests effectués l'ont été dans 4 configurations ​d'​exécution ​différentes : d'​abord l'​accélérateur et la totalité les coeurs exploités, puis l'​accélérateur et un unique coeur exploité, ensuite la totalité des coeurs exploités sans accélérateur,​ enfin un unique coeur exploité.+Cependant, avant de nous précipiter,​ les performances (et leur comparaison) nécessitent un peu de recul, notamment sur le fait que Gromacs est (aussi) un programme hybride exploitant très efficacement les différents coeurs d'un noeud ou les différents noeuds d'un cluster ! L'​introduction d'un GPU dans le "​système",​ suggérait une légitime interrogation : quel est (réellement) l'​apport de l'​accélérateur ? Pour être le plus "​honnête"​ possible, ​j'ai executé ​les tests dans 4 configurations différentes : d'​abord l'​accélérateur et la totalité les coeurs exploités, puis l'​accélérateur et un unique coeur exploité, ensuite la totalité des coeurs exploités sans accélérateur,​ enfin un unique coeur exploité.
  
-Si nous regardons l'​exploitation totale de chaque système (un accélérateur et tous les coeurs des CPU), nous avons presque un facteur 2 entre Tesla V100 et Tesla P100 : c'est parfaitement cohérent avec ce que nous avons déjà observé. Le gain de 1/3 entre la Tesla V100 et la RTX 2080 Ti est instructif. En effet, cela suggère que Gromacs, dans ce cas, s'accomode ​de la simple précision, sinon ce n'est pas un ratio de 1/3 par 1/20 que nous aurions ! A véritablement méditer en cas de fortes limitations budgétaires !+Si nous regardons l'​exploitation totale de chaque système (un accélérateur et tous les coeurs des CPU), nous avons presque un facteur 2 entre Tesla V100 et Tesla P100 : c'est parfaitement cohérent avec ce que nous avons déjà observé. Le gain de 1/3 entre la Tesla V100 et la RTX 2080 Ti est instructif. En effet, cela suggère que Gromacs, dans ce cas, s'accommode ​de la simple précision, sinon ce n'est pas un ratio de 1/3 par 1/20 que nous aurions ! A véritablement méditer en cas de fortes limitations budgétaires !
  
-Néanmoins, si nous analysons la seconde exécution (accélérateur et un unique coeur utilisé), les performances restent comparables entre GTX 1080 Ti et Tesla P100. Cependant, la Tesla V100 accuse le coup : de 80% au dessus de la P100, elle se retrouve 40% au dessus. Face à la RTX 2080 Ti, elle passe de 40% au dessus à 20%. En fait, si nous avons une telle différence de puissance entre les configurations de la Tesla P100 et la Tesla V100, c'est essentiellement à cause de la différence des processeurs ! Il suffit de regarder la comparaison entre exécutions uniquement sur processeurs pour s'en convaincre ! A noter pour finir que le C4140 uniquement avec tous ses coeurs de processeur fait aussi bien qu'une unique Tesla V100 sur un coeur.+Néanmoins, si nous analysons la seconde exécution (accélérateur et un unique coeur utilisé), les performances restent comparables entre GTX 1080 Ti et Tesla P100. Cependant, la Tesla V100 accuse le coup : de 80% au dessus de la P100, elle se retrouve 40% au dessus. Face à la RTX 2080 Ti, elle passe de 40% au-dessus à 20%. En fait, si nous avons une telle différence de puissance entre les configurations de la Tesla P100 et la Tesla V100, c'est essentiellement à cause de la différence des processeurs ! Il suffit de regarder la comparaison entre exécutions uniquement sur processeurs pour s'en convaincre ! A noter pour finir que le C4140 uniquement avec tous ses coeurs de processeur fait aussi bien qu'une unique Tesla V100 sur un coeur.
  
 {{ :​developpement:​activites:​qualification:​gromacs_c4140.png?​600|}} {{ :​developpement:​activites:​qualification:​gromacs_c4140.png?​600|}}
  
-Ainsi, quand un code "​métier"​ est exploité comme comparateur entre accélérateur, veiller à ce que les configurations CPU soient comparables ​est une salutaire précaution ​!+Ainsi, quand un code "​métier"​ est exploité comme comparateur entre accélérateursc'est une salutaire précaution de veiller à ce que  les configurations CPU soient comparables !
  
-Pour conclure sur Gromacs, ​alors que le programme est présenté comme multi-GPU, ​si des exécutions (et surtout ​une compilation spécifique) ont été réaliséesmais AUCUN GAIN significatif n'a été trouvé, ​et même pire : les calculs tournaient plus lentement en exploitant plusieurs Tesla V100 qu'une seule... Peut-être était-ce à cause d'un mauvais paramétrage :-/ ...+Pour conclure sur Gromacs, ​ce programme est présenté comme multi-GPU. Cependantmalgré ​une compilation spécifique, ​je n'ai obtenu ​AUCUN GAIN lors des exécutions ​et même pire : les calculs tournaient plus lentement en exploitant plusieurs Tesla V100 qu'une seule... Peut-être était-ce ​dû à un mauvais paramétrage :-/ ...
  
 === Tensorflow et CIFAR10 === === Tensorflow et CIFAR10 ===
  
-Impossible désormais de présenter un comparatif de GPU sans une évaluation de Deep Learning. Pour ma part, je me suis focalisé sur un test proposé par Tensorflow dans ses tutoriels et exploitant les bases d'​images CIFAR10. Les paramètres ont été modifiés pour s'​exécuter sur des volumes "​locaux"​ aux machines ​(et exclure ainsi les biais liés aux accès à des volumes distants). J'ai également réduit le nombre d'​itérations de 100000 à 10000 pour rester sur des temps d'​exécution raisonnable. Les performances ont enfin été normalisées par rapport à une exécution sur le CPU le plus lent (2 sockets E5-2637v4).+Impossible désormais de présenter un comparatif de GPU sans une évaluation de Deep Learning. Pour ma part, je me suis focalisé sur un test proposé par Tensorflow dans ses tutoriels et exploitant les bases d'​images CIFAR10. Les paramètres ont été modifiés pour s'​exécuter sur des volumes "​locaux"​ aux machines et exclure ainsi les biais liés aux accès à des volumes distants. J'ai également réduit le nombre d'​itérations de 100000 à 10000 pour rester sur des temps d'​exécution raisonnable. Les performances ont enfin été normalisées par rapport à une exécution sur le CPU le plus lent (2 sockets E5-2637v4).
  
 Nos premières analyses confirment ce que nous avions observé sur Gromacs : Tensorflow est aussi un programme hybride et donc la part de performance à associer aux coeurs CPU n'est pas à négliger. Mais l'​addition d'un accélérateur offre un gain très substantiel : 12x pour une GTX 1080Ti, 14x pour une RTX 2080Ti, 16x pour une Tesla P100 mais 25x pour une Tesla V100. Nous aurions pu nous attendre à mieux dans son match avec la P100, surtout étant donné la différence des processeurs de leurs systèmes respectifs, mais les mesures sont là ! Nos premières analyses confirment ce que nous avions observé sur Gromacs : Tensorflow est aussi un programme hybride et donc la part de performance à associer aux coeurs CPU n'est pas à négliger. Mais l'​addition d'un accélérateur offre un gain très substantiel : 12x pour une GTX 1080Ti, 14x pour une RTX 2080Ti, 16x pour une Tesla P100 mais 25x pour une Tesla V100. Nous aurions pu nous attendre à mieux dans son match avec la P100, surtout étant donné la différence des processeurs de leurs systèmes respectifs, mais les mesures sont là !
Ligne 151: Ligne 151:
 === Hoomd : le petit dernier mais si illustratif ! === === Hoomd : le petit dernier mais si illustratif ! ===
  
-Hoomd est arrivé dans ma batterie de tests quasiment par hasard. Il m'a été demandé de le déployer pour un laboratoire de biologie. J'ai alors découvert après son intégration qu'il disposait de benchmarks plutôt aboutis et facilement exécutables. J'ai donc entrepris de les intégrer aux tests. Ce programme de dynamique moléculaire par méthode de Monte Carlo est très intéressant ​il se rapproche ainsi de tests élémentaires que nous avons détaillés au début de nos investigations. Appels en Python, multiGPU, etc... Les benchmarks de Hoomd exploitent 7 cas d'​usage différents. A noter que la version Double Précision est INDISPENSABLE pour exécuter ces tests un des composants nécessaires à leur exécution l'​exige ! Cette contrainte est assez dommageable parce qu'​elle exclut toute comparaison avec les RTX ou GTX. +Hoomd est arrivé dans ma batterie de tests quasiment par hasard. Il m'a été demandé de le déployer pour un laboratoire de biologie. J'ai alors découvert après son intégration qu'il disposait de benchmarks plutôt aboutis et facilement exécutables. J'ai donc entrepris de les intégrer aux tests. Ce programme de dynamique moléculaire par méthode de Monte Carlo est très intéressant ​il se rapproche ainsi de tests élémentaires que nous avons détaillés au début de nos investigations. Appels en Python, multiGPU, etc... Les benchmarks de Hoomd exploitent 7 cas d'​usage différents. A noter que la version Double Précision est INDISPENSABLE pour exécuter ces tests un des composants nécessaires à leur exécution l'​exige ! Cette contrainte est assez dommageable parce qu'​elle exclut toute comparaison avec les RTX ou GTX. 
  
 Les 7 tests ont donc été exécutés 10 fois dans 5 configurations "​système"​ différentes : pour les GTX 1080Ti, RTX 2080Ti, Tesla P100, Tesla V100 et les 4 Tesla V100 du C4140. Les valeurs ont été renormalisées à la Tesla P100 (la configuration "​classique"​ présentée dans les benchmarks du site). Les 7 tests ont donc été exécutés 10 fois dans 5 configurations "​système"​ différentes : pour les GTX 1080Ti, RTX 2080Ti, Tesla P100, Tesla V100 et les 4 Tesla V100 du C4140. Les valeurs ont été renormalisées à la Tesla P100 (la configuration "​classique"​ présentée dans les benchmarks du site).
Ligne 157: Ligne 157:
 {{ :​developpement:​activites:​qualification:​hoomd_c4140.png?​600|}} {{ :​developpement:​activites:​qualification:​hoomd_c4140.png?​600|}}
  
-Quelles conclusions pouvons-nous tirer de ces évaluations ? Tout d'​abord, ​Les cartes de gamer GTX et RTX sont très rarement compétitives dans ce cas d'​exploitation : la RTX ne dépasse la Tesla P100 que dans un cas et reste équivalente dans 2 autres. La Tesla V100 l'​emporte à chaque fois, offrant au moins un facteur 2 dans 3 cas, au pire seulement 40% supplémentaire. La version multiGPU est rarement compétitive : 50% supplémentaire pour 4x plus de puissance brute, c'est assez faible... Dans deux cas, le multiGPU est franchement contre productif. Il reste cependant un cas dans lequel la présence de 4 cartes offre un gain de 3.57 : c'est très raisonnable ! Ce test Hoomd pourrait à lui seul résumer toute la difficulté de comparer les systèmes informatiques : il ne suffit que de donner une liste d'​applications à comparer, il faut également les cas d'​usage les plus significatifs ! Ainsi, en ne testant que "​Hexagon",​ nous en déduisions que le multiGPU était impressionnant alors que c'est l'​exception qui confirme la règle.+Quelles conclusions pouvons-nous tirer de ces évaluations ​sur Hoomd ? Tout d'​abord, ​les cartes de gamer GTX et RTX sont très rarement compétitives dans ce cas d'​exploitation : la RTX ne dépasse la Tesla P100 que dans un cas et reste équivalente dans 2 autres. La Tesla V100 l'​emporte à chaque fois, offrant au moins un facteur 2 dans 3 cas, au pire seulement 40% supplémentaire. La version multiGPU est rarement compétitive : 50% supplémentaire pour 4x plus de puissance brute, c'est assez faible... Dans deux cas, le multiGPU est franchement contre-productif. Il reste cependant un cas dans lequel la présence de 4 cartes offre un gain de 3.57 : c'est très raisonnable ! Ce test Hoomd pourrait à lui seul résumer toute la difficulté de comparer les systèmes informatiques : il ne suffit ​pas que de donner une liste d'​applications à comparer, il faut également les cas d'​usage les plus significatifs ! Ainsi, en ne testant que "​Hexagon",​ nous en déduisions que le multiGPU était impressionnant alors que c'est l'​exception qui confirme la règle.
  
 ====== Conclusion : un monstre polyvalent (mais pour les nantis) ====== ====== Conclusion : un monstre polyvalent (mais pour les nantis) ======
  
-Il est clair que la mise à disposition de ce C4140 m'a réconcilié avec la série des C41. Exit les instabilités chroniques des C410X, terminé ces Xeon Phi inexploitables des C4130. Dans une unité de baie, il est possible de disposer de la puissance brute d'une baie entière de noeuds de calcul assez "​musclés",​ et ce pour un nombre croissant d'​applications dans de nombreux ​domaine.+Il est clair que la mise à disposition de ce C4140 m'a réconcilié avec la série des C41. Exit les instabilités chroniques des C410X, terminé ces Xeon Phi inexploitables des C4130. Dans une unité de baie, il est possible de disposer de la puissance brute d'une baie entière de noeuds de calcul assez "​musclés",​ et ce pour un nombre croissant d'​applications dans de nombreux ​domaines.
  
 Oui, la Nvidia Tesla V100 est un "​monstre",​ reléguant la précédente,​ la Tesla P100 (qui était déjà impressionnante en son temps) à un facteur 2. Si l'​efficacité en double précision est exigée, il n'y a pas d'​autre option. Le C4140, cette intégration de 4 Tesla V100 dans une unité de baie est un pari : en plaçant le ticket d'​entrée très haut (un ensemble à 45k€ minimum), il faut pouvoir justifier d'une utilisation efficace de tous ses composants et dans tous les cas. Malheureusement,​ les codes exploitant efficacement plusieurs GPU restent rares, et, quand ils le sont, leurs cas d'​usage anecdotiques. Oui, la Nvidia Tesla V100 est un "​monstre",​ reléguant la précédente,​ la Tesla P100 (qui était déjà impressionnante en son temps) à un facteur 2. Si l'​efficacité en double précision est exigée, il n'y a pas d'​autre option. Le C4140, cette intégration de 4 Tesla V100 dans une unité de baie est un pari : en plaçant le ticket d'​entrée très haut (un ensemble à 45k€ minimum), il faut pouvoir justifier d'une utilisation efficace de tous ses composants et dans tous les cas. Malheureusement,​ les codes exploitant efficacement plusieurs GPU restent rares, et, quand ils le sont, leurs cas d'​usage anecdotiques.
developpement/activites/qualification/c4140.1564587148.txt.gz · Dernière modification: 2019/07/31 17:32 par equemene