Sto cercando di ottimizzare un'applicazione MPI con un modello di comunicazione altamente asincrono. Ogni rango ha un elenco di cose da calcolare e invia messaggi, se necessario, se gli input o gli output si trovano su un rango diverso. Inoltre, ogni rango è infilato (attualmente con un thread di comunicazione e 5 lavoratori).
Ho strumentato il codice con timer attorno alle diverse porzioni di codice critiche per le prestazioni, che mi dà un elenco di triple (inizio, fine, tipo) per ogni thread. Tracciato in modo ovvio, con il tempo come asse orizzontale, rango e filo come verticale e colore che indica cosa sta facendo ogni filo, ottengo un'immagine come questa per 16 ranghi con 6 fili / rango:
La mia domanda è: quali sono altri modi di visualizzare questi dati che potrebbero aiutare a individuare i problemi di prestazioni? Qualcuno ha un tipo preferito di trama che usano quando si profilano le applicazioni asincrone?
Questo set di dati è limitato in quanto non conosce la struttura del flusso di dati, ma mi piacerebbe approfondirne il più possibile prima di provare a raccogliere qualcosa di più complicato.
L'immagine non compressa è qui nel caso in cui qualcuno volesse guardarsi intorno (non è riuscito a caricare attraverso il percorso normale). Sfortunatamente, Firefox non lo accetta anche se credo che sia valido, forse perché è semplicemente troppo grande.