Как использовать ltrace для программ mpi?
Я хочу знать, как использовать ltrace для получения вызовов функций библиотеки приложения mpi, но просто ltrace не работает, и мой mpirun не может быть успешным. Любая идея?
1 ответ
Вы должны быть в состоянии просто использовать:
$ mpiexec -n 4 -other_mpiexec_options ltrace ./executable
Но это создаст огромный беспорядок, так как выходы из разных рангов будут объединены. Гораздо лучший вариант - перенаправить вывод ltrace
в отдельный файл для каждого ранга. Получить ранг легко с некоторыми реализациями MPI. Например, Open MPI экспортирует мировой рейтинг в переменной среды OMPI_COMM_WORLD_RANK
, Следующий скрипт-обертка поможет:
#!/bin/sh
ltrace --output trace.$OMPI_COMM_WORLD_RANK $*
Использование:
$ mpiexec -n 4 ... ltrace_wrapper ./executable
Это даст 4 файла трассировки, по одному для каждого ранга: trace.0
, trace.1
, trace.2
, а также trace.3
,
Для MPICH и других реализаций MPI на его основе и с использованием экспорта Hydra PM PMI_RANK
и приведенный выше сценарий должен быть изменен и OMPI_COMM_WORLD_RANK
заменено на PMI_RANK
, Можно также написать универсальную оболочку, которая работает с обоими семействами реализаций MPI.