2016-12-17 2 views
0

Я сравниваю программу MPI с различными настройками компилятора.Использование утилиты времени Linux для измерения производительности MPI-программы

Сейчас я использую для Linux time сделать так:

$> $(which time) mpirun -v [executable] 

Значения, которые я получаю выглядеть нормально с точки зрения того, что я ожидал.

Есть ли причины, по которым я должен не использовать time для этого?

Измерение необходимого времени процессора представляет для нас главный интерес.

Я знаю, что бенчмаркинг на одной машине не обязательно согласуется с тем, что происходит на кластере, но это выходит за рамки.

ответ

1

Вы должны не использовать time с целью получения процессорного времени программы MPI.

Во-первых, это не будет работать в распределенной настройке. Теперь ваш вопрос неясно, нацеливаетесь ли вы на один узел или кластер, но это даже не имеет значения. Реализация MPI может использовать любой механизм для запуска даже на одном узле. Таким образом, время может включать или не включать время процессора для реальных процессов приложения.

Но есть более концептуальные проблемы: что означает время процессора для программы MPI? Это будет суммой процессорного времени для всех процессов. Это плохой показатель для бенчмаркинга: он не количественно оценивает улучшение и не коррелирует с общей продолжительностью выполнения. Например, очень несбалансированная версия вашего кода может использовать меньше процессорного времени, но больше времени на стене, чем сбалансированный. Или включение занятого ожидания вместо блокировки может улучшить общее время выполнения, но также увеличить время использования процессора. Чтобы действительно понять, что происходит, и какой процесс использует какие ресурсы, вы должны прибегнуть к proper parallel performance analysis tool.

В HPC вы не будете завышены в расчете на процессорное время, а на зарезервированные процессоры * walltime. Поэтому, если вы должны использовать одномерную метрику, то настенный путь - это путь. Теперь вы можете использовать time mpirun ..., чтобы получить это, хотя точность не будет отличной для приложений с коротким сроком эксплуатации.

+0

Благодарим вас за подробный ответ! У меня очень мало опыта в этом вопросе, поэтому он очень ценится! – j2L4e

Смежные вопросы