Подтвердить что ты не робот

Инструменты для измерения затрат на связь MPI

Я использую MPI, и я хочу измерить затраты на связь, чтобы затем сравнить их с затратами на обработку, например, сколько времени мне нужно, чтобы разбросать список через n процессов, а затем сравнить его сколько времени мне нужно для его сортировки.

Кто-нибудь знает какие-либо инструменты для измерения этих затрат на связь? (например, разброс)

Есть ли что-то, что можно было бы измерить по коммуникационным расходам MPI, например, чтобы PAPI анализировал производительность кода?

Спасибо заранее!

4b9b3361

Ответ 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 для детального анализа трассировки.