J'essaie d'optimiser une application MPI avec un modèle de communication hautement asynchrone. Chaque rang a une liste de choses à calculer et envoie des messages si nécessaire si les entrées ou les sorties résident sur un rang différent. De plus, chaque rang est fileté (actuellement avec un fil de communication et 5 travailleurs).
J'ai instrumenté le code avec des minuteries autour des différentes parties critiques du code de performance, ce qui me donne une liste de triplets (début, fin, type) pour chaque thread. Tracé de manière évidente, avec le temps comme axe horizontal, le rang et le fil comme la verticale, et la couleur indiquant ce que fait actuellement chaque fil, j'obtiens une image comme celle-ci pour 16 rangs avec 6 fils / rang:
Ma question est: quelles sont les autres façons de visualiser ces données qui pourraient aider à identifier les problèmes de performances? Quelqu'un a-t-il un type de tracé préféré qu'il utilise lors du profilage des applications asynchrones?
Cet ensemble de données est limité en ce qu'il ne connaît pas la structure du flux de données, mais j'aimerais en tirer le maximum d'informations avant d'essayer de collecter quelque chose de plus compliqué.
L'image non compressée est là au cas où quelqu'un voudrait regarder autour (elle n'a pas pu être téléchargée via la route normale). Malheureusement, Firefox ne l'accepte pas même si je pense qu'il est valide, peut-être parce qu'il est tout simplement trop grand.