Sí, hay muchas de esas herramientas. MPI define una interfaz de herramientas que permite a otras bibliotecas interponerse en sus llamadas a función MPI, y conteos, tiempos, etc.
Una herramienta de generación de perfiles MPI muy pequeña es mpiP - brinda un breve resumen de la actividad de MPI en su código.
La biblioteca IPM es bastante fácil de construir y le da muchos recuentos y tiempos de MPI, y da como resultado un buen archivo HTML. Mencionas PAPI; IPM también integrará contadores PAPI si están disponibles. Usamos esto regularmente en nuestro centro, y creo que esto haría lo que quisieras. Si ha creado su programa con bibliotecas dinámicas para MPI, ni siquiera necesita volver a compilar para usarlo (mpiP tiene la misma propiedad).
Jumpshot, que viene con MPICH2 pero se puede construir con cualquier MPI, de hecho muestra en una línea de tiempo cuánto tiempo tomó cada operación de MPI.
OpenSpeedshop proporciona medidas de rendimiento muy detalladas de su código, destacando especialmente las líneas "caras"; también tiene un modo de rastreo de MPI que identificará los tiempos de MPI por línea de código. Puede ser complicado de instalar.
En la parte comercial del espectro hay Vampir de TU Dresden e Intel Trace Analyzer and Collector (ITAC). Vampir colecciona rastros de nivel de fuente, MPI y OpenMP usando la biblioteca de código abierto VampirTrace que también se integra con PAPI para proporcionar un seguimiento detallado de eventos y contadores. Las huellas de VampirTrace están en formato Open Trace que podrían leer otras herramientas además de Vampir.
ITAC es parte de Intel Cluster Studio XE. Está diseñado principalmente para trabajar con Intel MPI y compartir el mismo código ancestral con Vampir, proporciona más o menos la misma funcionalidad. Una de sus características agradables es el corrector de corrección de MPI automático en tiempo de ejecución incluido.
Allinea MAP es un perfilador de MPI de Allinea que proporciona análisis de rendimiento con un explorador de origen integrado que muestra el costo de comunicación/cálculo junto con las líneas individuales del código fuente. También muestra gráficos de alto nivel de la información de rendimiento, incluida la memoria, las instrucciones de la CPU y la comunicación.
Pero hay otras herramientas de nivel superior que no solo dan informes, sino que ofrecen consejos. "Perfexpert" de TACC es una herramienta basada en línea de comandos que toma una serie de medidas y ofrece algunos consejos de ajuste de rendimiento. Scalasca de Jülich, recompila su código con una gran cantidad de instrumentación a nivel de fuente y puede señalar desequilibrios de carga, particularmente colectivos MPI caros, etc. También se puede integrar con Vampir para un análisis de trazas detallado.
Agregaría [Vampir] (http://www.vampir.eu/) de TU Dresden y Intel Trace Analyzer and Collector.Ambos descienden del mismo ancestro y son herramientas excelentes y sofisticadas para el análisis del rendimiento de trazas MPI y OpenMP, pero desafortunadamente tienen licencia comercial. Scalasca es de código abierto, pero no es realmente adecuado para el análisis detallado de bajo nivel y para eso se integra con Vampir (la integración requiere una licencia válida de Vampir). [XMPI] (http://www.lam-mpi.org/software/xmpi/) solía distribuirse con LAM pero no se desarrolla activamente desde que LAM se fusionó con Open MPI. –
Sí, son geniales; Principalmente no los agregué porque son comerciales. ¿Crees que sería útil cambiar esto a una wiki de la comunidad y simplemente hacer que todos añadan sus sugerencias? –
¡Guau! ¡Muchas gracias a los dos! Solo una pregunta más, dado que preferiría hacer las mediciones en el clúster que estoy usando y no tengo permisos de administrador, ¿es posible instalar uno de estos programas en mi directorio? Aparte de mpiP que ya está instalado. IPM parece ser instalable sin privilegios de administrador, ¿estoy en lo cierto? ¡Gracias! –