next up previous contents
Next: Симметричные мультипроцессоры (SMP) и Up: Отладка программ MPI Previous: Использование коммерческого отладчика   Contents

Использование mpigdb

Устройство ch_p4mpd в mpich предоставляет ``параллельный отладчик'', который состоит просто из
нескольких копий отладчика gdb, и механизма перенаправления stdin. Команда mpigdb является версией mpirun, которая запускает каждый процесс под управлением gdb и управляет stdin для gdb. Команда `z' позволяет Вам направит ввод с терминала в определенный процесс или разослать его всем процессам. Мы демонстрирем это запуском cpi под управлением простого отладчика: donner% mpigdb -np 5 cpi                                         # по умолчанию вывод от всех
(mpigdb) b 29 # установить точку останова для
# всех
0-4: Breakpoint 1 at 0x8049e93: file cpi.c, line 29.
(mpigdb)r # запустить все 0-4:
Starting program:/home/lusk/mpich/examples/basic/cpi
0: Breakpoint 1, main (argc=1, argv=0xbffffa84) at cpi.c:29
1-4: Breakpoint 1, main (argc=1, argv=0xbffffa74) at cpi.c:29
0-4: 29     n = 0; # все достигли точки останова
(mpigdb)n # пошаговый режим для всех
0: 38 if (n==0) n=100; else n=0;
1-4: 42 MPI_Bcast (&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
(mpigdb) z0 # stdin только для процесса
# ранга 0
(mpigdb)n # пошаговый режим процесса
# ранга 0
0: 40 startwtime = MPI_Wtime ();
(mpigdb)n # до останова
0: 42 MPI_Bcast (&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
(mpigdb)z # stdin возвращен для всех
# процессов
(mpigdb)n # пошаговый режим для всех
... # до интересующего места
(mpigdb) n
0-4: 52         x = h * ( (double)i $-$ 0.5);
(mpigdb) px # вывод от всех процессов
0: $1 = 0.0050000000000000001 # значение x процесса 0
1: $1 = 0.014999999999999999 # значение x процесса 1
2: $1 = 0.025000000000000001 # значение x процесса 2
3: $1 = 0.035000000000000003 # значение x процесса 3
4: $1 = 0.044999999999999998 # значение x процесса 4
(mpigdb)c # продолжить все
0: pi is approximately 3.141600986923, Error is 0.000008333333
0$-$4: Program exited normally.
(mpigdb)q # выход
donner%
Если отлаживаемый процесс зависает (нет приглашения mpigdb) из-за ожидания текущим процессом действий другого процесса, ctl-C вызовет меню, позволяющее Вам переключать процессы. mpigdb не так развит, как TotalView, но зачастую полезнее и свободно распространяется с mpich.
next up previous contents
Next: Симметричные мультипроцессоры (SMP) и Up: Отладка программ MPI Previous: Использование коммерческого отладчика   Contents
Alex Otwagin 2002-12-16