Estoy tratando de optimizar una aplicación MPI con un patrón de comunicación altamente asíncrono. Cada rango tiene una lista de cosas para calcular y envía mensajes según sea necesario si las entradas o salidas residen en un rango diferente. Además, cada rango está enhebrado (actualmente con un hilo de comunicación y 5 trabajadores).
He instrumentado el código con temporizadores en torno a las diferentes porciones críticas de rendimiento del código, lo que me da una lista de (inicio, fin, tipo) triples para cada hilo. Trazado de manera obvia, con el tiempo como eje horizontal, rango e hilo como vertical, y el color indicando lo que cada hilo está haciendo actualmente, obtengo una imagen como esta para 16 rangos con 6 hilos / rango:
Mi pregunta es: ¿cuáles son otras formas de visualizar estos datos que podrían ayudar a detectar problemas de rendimiento? ¿Alguien tiene un tipo de diagrama favorito que usan al perfilar aplicaciones asincrónicas?
Este conjunto de datos es limitado porque no conoce la estructura del flujo de datos, pero me gustaría obtener la mayor cantidad de información posible antes de intentar recopilar algo más complicado.
La imagen sin comprimir está aquí en caso de que alguien quiera mirar alrededor (no se pudo cargar a través de la ruta normal). Desafortunadamente, Firefox no lo acepta a pesar de que creo que es válido, posiblemente porque es simplemente demasiado grande.