Frais généraux de communication en supercalcul

10

Je suis à la recherche de références crédibles indiquant combien de ressources les superordinateurs dépensent pour la coordination par rapport au travail réel lié aux tâches. Les ressources pourraient être une puissance de traitement disponible, mais même les watts semblent être une unité valide.

Je crois qu'un de mes professeurs ou manuels a dit un jour que dans des systèmes massivement parallèles, jusqu'à la moitié de la puissance de traitement disponible est consacrée à la coordination de la tâche et de la transmission des messages. Malheureusement, je n'arrive pas à trouver cette référence ou tout autre document sur cette proportion.

Je me rends compte que cela différera beaucoup en fonction de l'architecture du superordinateur et les implémentations modernes sont probablement plus efficaces à cet égard, donc une vue d'ensemble de cette métrique sur plusieurs architectures ou évolutions (avant et après le matériel de passage de messages dédié) serait encore mieux.

Tomas Creemers
la source
2
Vous pouvez facilement obtenir le nombre souhaité en choisissant un ordinateur, un algorithme et une implémentation appropriés.
David Ketcheson

Réponses:

10

2/3n3+2n2n

Les mesures de référence incluent RPEAK (le nombre maximum théorique d'opérations en virgule flottante par seconde pour le système) et RMAX (le nombre maximal atteint d'opérations par seconde dans le benchmark HPLinpack.)

Il est typique que RPEAK soit une fraction substantielle de RMAX, indiquant que sur cette tâche de référence, les superordinateurs actuels peuvent atteindre une fraction significative de leurs performances de pointe théoriques. Par exemple, dans le classement des superordinateurs TOP500 de novembre 2015, la machine la plus rapide, Tianhe-2, a RPEAK = 54,902 pétaflops et RMAX = 33,863 pétaflops.

Cependant, le benchmark HPLinpack est largement considéré comme n'étant pas représentatif des charges de travail actuelles. Les résultats de HPlinpack surestiment généralement les performances des superordinateurs dans les applications réelles par un facteur important.

Un nouveau benchmark, appelé HPCG, est en cours de développement. Cette référence implique des opérations communément effectuées dans des méthodes itératives pour la résolution de grands systèmes clairsemés d'équations résultant de PDE discrétisés. Cette charge de travail est beaucoup plus difficile pour les ordinateurs hautes performances. Il est également beaucoup plus représentatif de l'utilisation des superordinateurs dans la pratique.

Certains premiers résultats de HPCG arrivent à moins de 5% de RPEAK. Par exemple, Tianhe-2 a RPEAK = 54,902 pétaflops et HPCG à 0,58 pétaflops (voir référence ci-dessous pour une présentation sur HPCG.)

Les références du TOP500 HPLinpack sont disponibles à l'adresse suivante:

http://www.top500.org/

Une présentation sur HPCG est disponible à l'adresse suivante:

http://www.hpcg-benchmark.org/downloads/isc15/HPCG-ISC15-FINAL-SLIDES_update1.pdf

Le site Web de HPCG est à

http://www.hpcg-benchmark.org/

Brian Borchers
la source
1
2/3n3+2n2
3
Cela ne semble pas répondre à la question, car cela ne dit rien sur la transmission des messages.
David Ketcheson
Il répond partiellement à la question dans le sens où ces repères vous indiquent l'efficacité avec laquelle les unités à virgule flottante sont utilisées - vous pouvez soustraire de l'une pour savoir combien de temps est consacré à tout le reste, ce qui inclut la transmission de messages entre autres.
Brian Borchers
6

La réponse honnête est que nous ne savons pas. La réponse dépend fortement de ce qui est réellement exécuté et du code que l'utilisateur a écrit. Comme le souligne Brian Borchers, il y a une grande différence entre deux repères où nous avons tout le code et qui sont censés savoir ce que fait ce code, mais il y a beaucoup de désaccord sur la représentativité de ce code par rapport à ce que font réellement les utilisateurs de superordinateurs. Sans analyse détaillée du code source et une instrumentation lourde de codes réels sur de vraies machines, trouver ce rapport est presque impossible. Certains projets commencent à collecter des données qui pourraient permettre à la communauté de répondre à cette question, mais ce n'est pas du tout réglé.

En fait, la question n'est même pas vraiment claire. Si la carte de communication d'un nœud de cluster a un processeur qui ne peut être utilisé que pour la communication, comment comptez-vous le temps que cette carte passe inactive à ne pas gérer la communication (ni rien d'autre)? C'est-à-dire ce qui compte comme "puissance de traitement disponible"? Est-ce que nous comptons les programmes mal écrits qui ont des routines de calcul et de communication non optimisées comme optimisées? Que faire si quelqu'un utilise un anti-modèle connu dans son code qui sous-utilise délibérément le CPU? Qu'en est-il des programmes parallèlement embarrassants qui ne communiquent pas du tout (ceux-ci s'exécutent sur des superordinateurs, je vous le promets)?

Je ne perdrais pas votre temps à essayer de quantifier une remarque spontanée dans un livre ou de la part de votre professeur. Ces types de déclarations sont là pour nous rappeler que la programmation parallèle est difficile et généralement mal faite. Les superordinateurs ne sont pas non plus parfaitement conçus pour éliminer ou optimiser tous les déchets.

Bill Barth
la source