Как использовать 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.

Другие вопросы по тегам