Ich versuche, eine MPI-Anwendung mit einem stark asynchronen Kommunikationsmuster zu optimieren. Jeder Rang hat eine Liste der zu berechnenden Dinge und sendet nach Bedarf Nachrichten, wenn sich die Ein- oder Ausgänge auf einem anderen Rang befinden. Zusätzlich wird jeder Rang mit einem Thread versehen (derzeit mit einem Kommunikationsthread und 5 Arbeitern).
Ich habe den Code mit Timern um die verschiedenen leistungskritischen Teile des Codes herum instrumentiert, wodurch ich eine Liste von (Start-, End-, Typ-) Tripeln für jeden Thread bekomme. Auf offensichtliche Weise dargestellt, mit Zeit als horizontale Achse, Rang und Faden als vertikale Achse und Farbe, die angibt, was jeder Faden gerade tut, erhalte ich ein Bild wie dieses für 16 Ränge mit 6 Fäden / Rang:
Meine Frage lautet: Welche anderen Möglichkeiten zur Visualisierung dieser Daten können dazu beitragen, Leistungsprobleme zu beheben? Hat jemand einen bevorzugten Plottyp, den er bei der Profilerstellung für asynchrone Anwendungen verwendet?
Dieser Datensatz ist insofern begrenzt, als er die Datenflussstruktur nicht kennt, aber ich möchte so viel Einblick wie möglich daraus gewinnen, bevor ich versuche, etwas Komplizierteres zu sammeln.
Das unkomprimierte Bild ist hier, falls sich jemand umschauen möchte (es konnte nicht über die normale Route hochgeladen werden). Leider akzeptiert Firefox es nicht, obwohl ich glaube, dass es gültig ist, möglicherweise weil es einfach zu groß ist.