Перезапустите подчиненный mpi после контрольной точки до сбоя на ARMv6

ОБНОВИТЬ

У меня есть университетский проект, в котором я должен создать кластер с RPis. Теперь у нас есть полностью функциональная система с включенным BLCR / MPICH. BLCR очень хорошо работает с обычными процессами, связанными с lib. Демонстрации, которые мы должны показать с помощью нашего веб-интерфейса управления:

параллельное выполнение заданиямиграция процессов через узлыотказоустойчивость с MPI

Нам разрешено использовать самые простые вычисления. Первый, который мы получили легко, с MPI тоже. Во-вторых, у нас фактически есть работа только с обычными процессами (без MPI). Что касается третьего пункта, у меня меньше идей о том, как реализовать схему MPI «ведущий-ведомый», в которой я могу перезапустить подчиненный процесс, что также влияет на пункт два, потому что мы должны / можем / должны иметь контрольную точку подчиненного процесса, kill / stop. и перезапустите его на другом узле. Я знаю, что мне приходится самостоятельно обрабатывать ошибки MPI_Error, но как восстановить процесс? Было бы хорошо, если бы кто-то мог опубликовать мне ссылку или статью (с объяснениями) хотя бы.

заранее спасибо

ОБНОВИТЬ: Как написано ранее, наш материал BLCR + MPICH работает или, кажется, работает. Но ... Когда я запускаю MPI-процессы, кажется, что контрольная точка работает хорошо.

Вот доказательство:

... snip ...
Benchmarking: dynamic_5: md5($s.$p.$s) [32/32 128x1 (MD5_Body)]... DONE
Many salts: 767744 c/s real, 767744 c/s virtual
Only one salt:  560896 c/s real, 560896 c/s virtual

Benchmarking: dynamic_5: md5($s.$p.$s) [32/32 128x1 (MD5_Body)]... [proxy:0:0@node2] requesting checkpoint
[proxy:0:0@node2] checkpoint completed
[proxy:0:1@node1] requesting checkpoint
[proxy:0:1@node1] checkpoint completed
[proxy:0:2@node3] requesting checkpoint
[proxy:0:2@node3] checkpoint completed
... snip ...

Если я убью один Slave-Process на любом узле, я получу это здесь:

... snip ...
===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   EXIT CODE: 9
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
... snip ...

Это нормально, потому что у нас есть контрольная точка, чтобы мы могли перезапустить наше приложение. Но это нет работа:

pi        7380  0.0  0.2   2984  1012 pts/4    S+   16:38   0:00 mpiexec -ckpointlib blcr -ckpoint-prefix /tmp -ckpoint-num 0 -f /tmp/machinefile -n 3
pi        7381  0.1  0.5   5712  2464 ?        Ss   16:38   0:00 /usr/bin/ssh -x 192.168.42.101 "/usr/local/bin/mpich/bin/hydra_pmi_proxy" --control-port masterpi:47698 --rmk user --launcher ssh --demux poll --pgid 0 --retries 10 --usize -2 --proxy-id 0
pi        7382  0.1  0.5   5712  2464 ?        Ss   16:38   0:00 /usr/bin/ssh -x 192.168.42.102 "/usr/local/bin/mpich/bin/hydra_pmi_proxy" --control-port masterpi:47698 --rmk user --launcher ssh --demux poll --pgid 0 --retries 10 --usize -2 --proxy-id 1
pi        7383  0.1  0.5   5712  2464 ?        Ss   16:38   0:00 /usr/bin/ssh -x 192.168.42.105 "/usr/local/bin/mpich/bin/hydra_pmi_proxy" --control-port masterpi:47698 --rmk user --launcher ssh --demux poll --pgid 0 --retries 10 --usize -2 --proxy-id 2
pi        7438  0.0  0.1   3548   868 pts/1    S+   16:40   0:00 grep --color=auto mpi

Я нене знаю почему, но при первом перезапуске приложения на каждом узле процесс кажется перезапущенным (я получил его с помощьюТоп или жеPS Aux | grep "джон» но не выводятся данные для управления (или на консоли управления / терминале). Это просто зависает после показа мне:

mpiexec -ckpointlib blcr -ckpoint-prefix /tmp -ckpoint-num 0 -f /tmp/machinefile -n 3
Warning: Permanently added '192.168.42.102' (ECDSA) to the list of known hosts.
Warning: Permanently added '192.168.42.101' (ECDSA) to the list of known hosts.
Warning: Permanently added '192.168.42.105' (ECDSA) to the list of known hosts.

Мой план B состоит в том, чтобы просто протестировать с собственным приложением, действительно ли работает BLCR / MPICH. Может быть, есть некоторые проблемы с Джоном.

заранее спасибо

**

ОБНОВИТЬ

** Следующая проблема с простым привет миром. Я расстраиваюсь медленно. Может я'Я запутался слишком сильно.

mpiexec -ckpointlib blcr -ckpoint-prefix /tmp/ -ckpoint-interval 3 -f /tmp/machinefile -n 4 ./hello
Warning: Permanently added '192.168.42.102' (ECDSA) to the list of known hosts.
Warning: Permanently added '192.168.42.105' (ECDSA) to the list of known hosts.
Warning: Permanently added '192.168.42.101' (ECDSA) to the list of known hosts.
[proxy:0:0@node2] requesting checkpoint
[proxy:0:0@node2] checkpoint completed
[proxy:0:1@node1] requesting checkpoint
[proxy:0:1@node1] checkpoint completed
[proxy:0:2@node3] requesting checkpoint
[proxy:0:2@node3] checkpoint completed
[proxy:0:0@node2] requesting checkpoint
[proxy:0:0@node2] HYDT_ckpoint_checkpoint (./tools/ckpoint/ckpoint.c:111): Previous checkpoint has not completed.[proxy:0:0@node2] HYD_pmcd_pmip_control_cmd_cb (./pm/pmiserv/pmip_cb.c:905): checkpoint suspend failed
[proxy:0:0@node2] HYDT_dmxu_poll_wait_for_event (./tools/demux/demux_poll.c:77): callback returned error status
[proxy:0:0@node2] main (./pm/pmiserv/pmip.c:206): demux engine error waiting for event
[proxy:0:1@node1] requesting checkpoint
[proxy:0:1@node1] HYDT_ckpoint_checkpoint (./tools/ckpoint/ckpoint.c:111): Previous checkpoint has not completed.[proxy:0:1@node1] HYD_pmcd_pmip_control_cmd_cb (./pm/pmiserv/pmip_cb.c:905): checkpoint suspend failed
[proxy:0:1@node1] HYDT_dmxu_poll_wait_for_event (./tools/demux/demux_poll.c:77): callback returned error status
[proxy:0:1@node1] main (./pm/pmiserv/pmip.c:206): demux engine error waiting for event
[proxy:0:2@node3] requesting checkpoint
[proxy:0:2@node3] HYDT_ckpoint_checkpoint (./tools/ckpoint/ckpoint.c:111): Previous checkpoint has not completed.[proxy:0:2@node3] HYD_pmcd_pmip_control_cmd_cb (./pm/pmiserv/pmip_cb.c:905): checkpoint suspend failed
[proxy:0:2@node3] HYDT_dmxu_poll_wait_for_event (./tools/demux/demux_poll.c:77): callback returned error status
[proxy:0:2@node3] main (./pm/pmiserv/pmip.c:206): demux engine error waiting for event
[mpiexec@masterpi] control_cb (./pm/pmiserv/pmiserv_cb.c:202): assert (!closed) failed
[mpiexec@masterpi] HYDT_dmxu_poll_wait_for_event (./tools/demux/demux_poll.c:77): callback returned error status
[mpiexec@masterpi] HYD_pmci_wait_for_completion (./pm/pmiserv/pmiserv_pmci.c:197): error waiting for event
[mpiexec@masterpi] main (./ui/mpich/mpiexec.c:331): process manager error waiting for completion

Привет

/* C Example */
#include 
#include 


int main (argc, argv)
     int argc;
     char *argv[];
{
  int rank, size, i, j;
 char hostname[1024];
        hostname[1023] = '\0';
        gethostname(hostname, 1023);

  MPI_Init (&argc, &argv);      /* starts MPI */
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */
  MPI_Comm_size (MPI_COMM_WORLD, &size);        /* get number of processes */
  i = 0;
  for(i ; i < 400000000; i++){
    for(j; j < 4000000; j++){
        }
  }
        printf("%s done...", hostname);
  printf("%s: %d is alive\n", hostname, getpid());
  MPI_Finalize();
  return 0;
}

Ответы на вопрос(0)

Ваш ответ на вопрос