2014-09-05 3 views

ответ

5

Вы должны быть в состоянии просто использовать:

$ 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.