Устройство 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
04: Program exited normally.
(mpigdb)q # выход
donner%
Если отлаживаемый процесс зависает (нет приглашения mpigdb) из-за
ожидания текущим процессом действий другого процесса, ctl-C вызовет меню,
позволяющее Вам переключать процессы. mpigdb не так развит, как TotalView,
но зачастую полезнее и свободно распространяется с mpich.
Next:Симметричные мультипроцессоры (SMP) и Up:Отладка программ MPI Previous:Использование коммерческого отладчикаContents
Alex Otwagin
2002-12-16