Ответ 1
Да, там много таких инструментов. MPI определяет интерфейс инструментов, который позволяет другим библиотекам вставлять себя в вызовы функций MPI и делать подсчеты, время и т.д.
Очень маленький инструмент профилирования MPI mpiP - он дает очень короткое резюме активности MPI в вашем коде.
Библиотека IPM довольно проста в построении и дает вам много счетчиков и времени MPI и дает хороший HTML файл как результат. Вы упоминаете PAPI; IPM также будет интегрировать счетчики PAPI, если они доступны. Мы регулярно используем это в нашем центре, и я думаю, что это будет делать то, что вам нравится. Если вы создали свою программу с динамическими библиотеками для MPI, вам даже не нужно перекомпилировать ее для использования (mpiP имеет такое же свойство).
Jumpshot, который поставляется с MPICH2, но может быть построен с любым MPI, на самом деле показывает на временной шкале, как долго выполнялась каждая операция MPI.
OpenSpeedshop дает очень подробные измерения производительности вашего кода, выделяя особенно "дорогие" линии; он также имеет режим трассировки MPI, который будет определять время MPI по строке кода. Это может быть сложно установить.
В коммерческой части спектра есть Vampir от TU Dresden и Intel Trace Analyzer и Collector (ITAC). Vampir собирает трассы исходного уровня, MPI и OpenMP, используя библиотеку VampirTrace с открытым исходным кодом, которая также интегрируется с PAPI для обеспечения подробного отслеживания событий и встречных запросов. Трассировки VampirTrace находятся в формате Open Trace, который может быть прочитан различными другими инструментами, помимо Vampir.
ITAC является частью Intel Cluster Studio XE. Он в основном предназначен для работы с Intel MPI и совместного использования одного и того же предкового кода с Vampir, обеспечивает более или менее ту же функциональность. Одной из его замечательных функций является включенная автоматическая проверка правильности времени выполнения MPI.
Allinea MAP - это профилировщик MPI от Allinea, который обеспечивает анализ производительности с помощью встроенного браузера источника, который отображает стоимость связи/вычисления наряду с отдельными линиями исходный код. Он также показывает высокоуровневые графики информации о производительности, включая память, инструкции процессора и связь.
Но есть и другие инструменты более высокого уровня, которые не только дают отчеты, но и дают советы. TACC perfexpert - это инструмент, основанный на командной строке, который выполняет ряд измерений и предлагает некоторые рекомендации по настройке производительности. Scalasca из Jülich, перекомпилирует ваш код с помощью множества инструментов на уровне исходного кода и может указывать на дисбаланс нагрузки, особенно дорогие коллективы MPI и т.д. Он также может интегрироваться с Vampir для детального анализа трассировки.