MPI_Comm_spawn throws Утверждение не удалось в файле src / util / procmap / local_proc.c в строке 127: идентификатор_узла & lt; = max_node_id

Я использую MPICH. Я запускаю программу MPI с одним процессом, используя:

mpiexec -n 1 -f hostfile ./master [arguments]

Где мои аргументы — это набор аргументов, требуемых процессом mpi. Мастер вычисляет оптимальное количество рабочих процессов, которые будут порождены, а затем вызывает следующую функцию:

MPI_Comm_spawn("./worker", argv, nprocs, MPI_INFO_NULL, 0, MPI_COMM_SELF,&intercomm,NULL);

Теперь эта программа работает нормально, когда у меня машинный файл выглядит так:

node01:2
node02:1
node03:1
node04:1

Итак, на node01 у меня запущено 2 процесса (мастер + 1 рабочий), а на остальных узлах есть один процесс. Однако я хочу, чтобы каждый узел запускал только 1 процесс. Поэтому я изменил hostfile следующим образом. Теперь после MPI_COMM_spawn(), дочерние процессы не инициализированы, и я получаю в результате утверждение не удалось.

node01:1
node02:1
node03:1
node04:1

ОШИБКА

Assertion failed in file src/util/procmap/local_proc.c at line 127: node_id <= max_node_id
internal ABORT - process 0
Assertion failed in file src/util/procmap/local_proc.c at line 112: my_node_id <= max_node_id
internal ABORT - process 2
Assertion failed in file src/util/procmap/local_proc.c at line 127: node_id <= max_node_id
internal ABORT - process 1

Я не могу понять, что происходит в этом случае. Кто-нибудь еще сталкивался с подобной проблемой? Какова вероятная причина этого?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]