Как я отлаживаю программу MPI?

git add -A -n будет делать то, что вы хотите. -A добавляет все нерекционированные файлы в репо, -n делает его dry-run, где добавление не выполняется, но выводится статус, указывающий каждый файл, который добавил .

119
задан Jay Conrod 30 November 2008 в 20:02
поделиться

8 ответов

Как кто-то еще сказал, , TotalView является стандартом для этого. Но это будет стоить Вам руки и участка.

сайт OpenMPI имеет великое FAQ на MPI отладка . Объект № 6 в FAQ описывает, как присоединить GDB к процессам MPI. Считайте все это, существуют некоторые большие подсказки.

, Если Вы находите, что у Вас есть слишком много процессов для отслеживания, тем не менее, выезд Аналитический инструмент отслеживания стека (STAT) . Мы используем это в Ливерморе, чтобы собрать отслеживания стека из потенциально сотен тысяч выполнения процессов и представить их разумно пользователям. Это не полнофункциональный отладчик (полнофункциональный отладчик никогда не масштабировался бы к 208k ядрам), но это скажет Вам, какие группы процессов делают то же самое. Можно тогда ступить через представителя каждой группы в стандартном отладчике.

58
ответ дан roadsunknown 5 November 2019 в 08:30
поделиться

"Стандартный" способ отладить программы MPI при помощи отладчика, который поддерживает ту модель выполнения.

На UNIX, TotalView, как говорят, имеет хорошую поддержку MPI.

3
ответ дан Community 5 November 2019 в 08:30
поделиться

http://github.com/jimktrains/pgdb/tree/master - это утилита, в которую я написал делай то же самое. Есть несколько документов, и вы можете свободно отвечать мне на вопросы.

Вы в основном вызываете Perl-программу, которая оборачивает GDB и направляет ее IO на центральный сервер. Это позволяет GDB работать на каждом хосте, и вы можете обращаться к нему на каждом хосте в терминале.

6
ответ дан Jim Keener 24 November 2019 в 01:50
поделиться

Я использую этот маленький доморощенный метод для присоединения отладчика к процессам MPI - вызовите следующую функцию DebugWait () сразу после MPI_Init () в вашем коде. Теперь, когда процессы ждут ввода с клавиатуры, у вас есть время подключить к ним отладчик и добавить точки останова. Когда вы закончите, введите один символ, и вы готовы к работе.

static void DebugWait(int rank) {
    char    a;

    if(rank == 0) {
        scanf("%c", &a);
        printf("%d: Starting now\n", rank);
    } 

    MPI_Bcast(&a, 1, MPI_BYTE, 0, MPI_COMM_WORLD);
    printf("%d: Starting now\n", rank);
}

Конечно, вы захотите скомпилировать эту функцию только для отладочных сборок.

2
ответ дан 24 November 2019 в 01:50
поделиться

Я провожу отладку, связанную с MPI, с трассировкой журнала, но вы также можете запустить gdb, если используете mpich2: MPICH2 и gdb . Этот метод является хорошей практикой, когда вы имеете дело с процессом, который сложно запустить из отладчика.

1
ответ дан 24 November 2019 в 01:50
поделиться

There is also my open-source tool, padb, which aims to help with parallel programming. I call it a "Job Inspection Tool" as it functions not only as a debugger can also function for example as a parallel top like program. Run in "Full Report" mode it'll show you stack traces of every process within your application along with local variables for every function over every rank (assuming you compiled with -g). It'll also show you the "MPI message queues", that is the list of outstanding sends and receives for each rank within the job.

As well as showing the full report it's also possible to tell padb to zoom in on individual bits of information within the job, there are a myriad of options and configuration items to control what information is shown, see the web page for more details.

Padb

2
ответ дан 24 November 2019 в 01:50
поделиться

Я нашел gdb весьма полезным. Я использую его как

mpirun -np <NP> xterm -e gdb ./program 

Это запускает окна xterm, в которых я могу делать

run <arg1> <arg2> ... <argN>

обычно работает нормально

Вы также можете упаковать эти команды вместе, используя:

mpirun -n <NP> xterm -hold -e gdb -ex run --args ./program [arg1] [arg2] [...]
79
ответ дан 24 November 2019 в 01:50
поделиться
8
ответ дан 24 November 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: