Инструкции по запуску gprof
обычно предполагают, что программа является последовательной или однопроцессной, но многопоточной.
Для запуска gprof
с многопроцессорной программой, такой как программа MPI, вам понадобится
- убедитесь, что каждый процесс выводит свой собственный файл
- , явно суммируйте файлы по процессам
- запустите
gprof
по результатам.
Этот пост в блоге или эти инструкции в LLNL являются хорошими отправными точками:
- Установите плохо документированную переменную окружения
GMON_OUT_PREFIX
, например, в bash, export GMON_OUT_PREFIX=gmon.out-
перед запуском команды mpiexec (тогда, в зависимости от среды, вам может потребоваться запустить mpirun -x GMON_OUT_PREFIX -np Nproc EXEC.exe arg1 ... argN
, чтобы убедиться, что у каждого процесса есть переменная среды) - Использовать сам gprof для сбора и суммирования результатов,
gprof -s EXEC.exe gmon.out-*
gprof EXEC.exe gmon.sum
(или просто просмотреть отдельные файлы или файлы вместе, с помощью gprof EXEC.exe gmon.out-12345
или gprof EXEC.exe gmon.out-*
)