Diagrammes parallèles de mise à l'échelle / efficacité log-log

17

Une grande partie de mon propre travail consiste à améliorer la mise à l'échelle des algorithmes, et l'une des façons préférées de montrer la mise à l'échelle parallèle et / ou l'efficacité parallèle est de tracer les performances d'un algorithme / code sur le nombre de cœurs, par exemple

tracé de mise à l'échelle parallèle artificiel

où l' axe représente le nombre de cœurs et l' axe une métrique, par exemple le travail effectué par unité de temps. Les différentes courbes montrent des rendements parallèles de 20%, 40%, 60%, 80% et 100% à 64 cœurs respectivement.Xy

Malheureusement, dans de nombreuses publications, ces résultats sont tracés avec une échelle log-log , par exemple les résultats dans ce ou cet article. Le problème avec ces tracés log-log est qu'il est extrêmement difficile d'évaluer la mise à l'échelle / efficacité parallèle réelle, par exemple

entrez la description de l'image ici

C'est le même tracé que ci-dessus, mais avec une mise à l'échelle log-log. Notez qu'il n'y a plus de grande différence entre les résultats pour une efficacité parallèle de 60%, 80% ou 100%. J'ai écrit un peu plus à ce sujet ici .

Voici donc ma question: quelle justification y a-t-il pour afficher les résultats de la mise à l'échelle log-log? J'utilise régulièrement la mise à l'échelle linéaire pour montrer mes propres résultats, et je suis régulièrement martelé par les arbitres qui disent que mes propres résultats de mise à l'échelle parallèle / efficacité ne sont pas aussi bons que les résultats (log-log) des autres, mais pour la vie de moi, je ne vois pas pourquoi je devrais changer de style de tracé.

Pedro
la source

Réponses:

16

Nous écrivons actuellement un document qui contient un certain nombre de parcelles comparables, et nous avons plus ou moins eu le même problème. L'article porte sur la comparaison de la mise à l'échelle de différents algorithmes sur le nombre de cœurs, qui varie entre 1 et jusqu'à 100k sur un BlueGene. La raison de l'utilisation de loglog-plot dans cette situation est le nombre d'ordres de grandeur impliqués. Il est impossible de tracer 6 ordres de grandeur sur une échelle linéaire.

Et en effet, lors du traçage de l'heure sur le nombre de cœurs dans le journal des événements, les algorithmes ne sont pas très distinguables, comme vous pouvez le voir dans le graphique suivant. Timings d'un certain nombre d'algorithmes à l'échelle loglog.  Les différents algorithmes sont difficiles à distinguer.

Ep=T1/(pTp)T1TpppEpp

Ep=TreF/(pTp)TreF

Le traçage de l'efficacité parallèle relative sur une échelle de semi-journal montre assez clairement la mise à l'échelle d'un algorithme et montre également comment les algorithmes fonctionnent relativement les uns par rapport aux autres. Efficacité parallèle relative d'un certain nombre d'algorithmes sur le nombre de cœurs.

olenz
la source
2
X
Notez que les graphiques ne sont pas aussi impressionnants que les autres graphiques à l'échelle, car ils tombent assez rapidement sur l'échelle du journal. En outre, vous pouvez en théorie également tracer l'efficacité dans un tracé de journal pour voir plus de détails sur le bord droit. Notez cependant que cela signifie que vous examinez en détail des rendements très faibles, ce qui n'est probablement pas d'un grand intérêt.
olenz
14

Georg Hager a écrit à ce sujet dans Fooling the Masses - Stunt 3: L'échelle logarithmique est votre ami .

S'il est vrai que les tracés log-log de mise à l'échelle forte ne sont pas très exigeants sur le haut de gamme, ils permettent de montrer la mise à l'échelle sur de nombreux autres ordres de grandeur. Pour voir pourquoi cela est utile, considérons un problème 3D avec un raffinement régulier. Sur une échelle linéaire, vous pouvez raisonnablement afficher les performances sur environ deux ordres de grandeur, par exemple 1024 cœurs, 8192 cœurs et 65536 cœurs. Il est impossible pour le lecteur de dire à partir de l'intrigue si vous avez exécuté quelque chose de plus petit, et de manière réaliste, l'intrigue compare principalement les deux plus grandes séries.

Supposons maintenant que nous pouvons adapter 1 million de cellules de grille par cœur en mémoire, cela signifie qu'après une forte mise à l'échelle deux fois par un facteur de 8, nous pouvons toujours avoir 16 000 cellules par cœur. C'est toujours une taille de sous-domaine importante et nous pouvons nous attendre à ce que de nombreux algorithmes s'exécutent efficacement là-bas. Nous avons couvert le spectre visuel du graphique (1024 à 65536 cœurs), mais nous ne sommes même pas entrés dans le régime où une mise à l'échelle forte devient difficile.

Supposons plutôt que nous commencions avec 16 cœurs, également avec 1 million de cellules de grille par cœur. Maintenant, si nous passons à 65536 cœurs, nous n'aurons que 244 cellules par cœur, ce qui sera beaucoup plus exigeant. Un axe logarithmique est le seul moyen de représenter clairement le spectre de 16 cœurs à 65536 cœurs. Bien sûr, vous pouvez toujours utiliser un axe linéaire et avoir une légende disant "les points de données pour 16, 128 et 1024 coeurs se chevauchent dans la figure", mais maintenant vous utilisez des mots au lieu de la figure elle-même pour afficher.

Une échelle log-log permet également à votre évolutivité de "récupérer" des attributs de la machine, comme le déplacement au-delà d'un seul nœud ou rack. C'est à vous de décider si cela est souhaitable ou non.

Jed Brown
la source
Xy
1
Il est beaucoup plus difficile à l' échelle forte un seul problème par un facteur de 4096 qu'à l' échelle deux différentes tailles de problème par un facteur de 64 chacun. Dans l'exemple que j'ai donné, il est facile de faire en sorte que les deux cas indépendants présentent une efficacité supérieure à 95%, mais que le cas combiné unique ait une efficacité inférieure à 30%. Dans la science et l'industrie, il n'y a pas de raison prédéterminée pour que le temps de rotation souhaité tombe dans la plage de taille étroite où l'algorithme est "confortable".
Jed Brown
Je suis tout à fait d'accord pour dire que passer de un à plusieurs milliers est le grand défi! La raison pour laquelle je considère que différentes amplitudes sont des problèmes différents est que cela signifiera des choses différentes pour l'utilisateur final. Par exemple, en médecine, la plupart des biologistes n'ont pas de BlueGene au sous-sol, mais ont des postes de travail multi-cœurs, ou même une subvention pendant un certain temps sur un cluster de taille moyenne (petit nombre de nœuds), et les personnes regardant en grand Les problèmes CFD, cependant, ne se soucient pas beaucoup du cas à nœud unique car le problème ne tient pas en mémoire. Il ne s'agit pas du confort de l'algorithme, mais de la configuration de l'utilisateur.
Pedro
2

Je suis d'accord avec tout ce que Jed avait à dire dans sa réponse, mais je voulais ajouter ce qui suit. Je suis devenu un fan de la façon dont Martin Berzins et ses collègues montrent la mise à l'échelle pour leur cadre Uintah. Ils tracent la mise à l'échelle faible et forte du code sur les axes log-log (en utilisant le temps d'exécution par étape de la méthode). Je pense que cela montre comment le code évolue assez bien (bien que l'écart par rapport à une mise à l'échelle parfaite soit un peu difficile à déterminer). Voir page 7 et 8 figures 7 et 8 de ce * papier par exemple. Ils donnent également un tableau avec les nombres correspondant à chaque chiffre de mise à l'échelle.

Un avantage de ceci est qu'une fois que vous avez fourni les chiffres, il n'y a pas grand-chose qu'un critique peut dire (ou du moins pas beaucoup que vous ne pouvez pas réfuter).

* J. Luitjens, M. Berzins. «Improving the Performance of Uintah: A Large-Scale Adaptive Meshing Computational Framework», dans les actes du 24e IEEE International Parallel and Distributed Processing Symposium (IPDPS10), Atlanta, GA, pp. 1--10. 2010. DOI: 10.1109 / IPDPS.2010.5470437

Bill Barth
la source
Avez-vous des chances d'incorporer l'image directement dans votre réponse?
Aron Ahmadia
Bien que ce soit sans doute une utilisation équitable pour emprunter leur chiffre, je préfère générer du trafic vers le site des auteurs. Je vais peut-être faire quelques chiffres et mon propre graphique et revenir plus tard avec un chiffre.
Bill Barth
De ce point de vue, vous pouvez envelopper l'image pour qu'elle renvoie vers le site de l'auteur, ainsi que pour augmenter la quantité de texte dans le lien. Si vous souhaitez en discuter davantage, je peux ouvrir un fil de méta / chat.
Aron Ahmadia
@BillBarth Votre lien redirige simplement vers leur page d'accueil maintenant. Pourriez-vous le corriger ou intégrer l'image souhaitée?
Jed Brown
1
@JedBrown Link modifié. Référence complète ajoutée. Ajouta DOI.
Bill Barth