Код MPI не работает с 2 узлами, но с 1

Супер РЕДАКТИРОВАТЬ:

Добавление шага трансляции приведет к ncols чтобы распечатать двумя процессами мастер-узел (из которого я могу проверить вывод). Но почему? Я имею в виду, что все переменные, которые транслируются, уже имеют значение в строке своего объявления !!! (не по теме образ).


У меня есть код, основанный на этом пример.

Я проверил, что конфигурация кластера в порядке, с этой простой программой, которая также напечатал IP машины, на которой он будет работать:

int main (int argc, char *argv[])
{
int rank, size;

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 */
printf( "Hello world from process %d of %d\n", rank, size );
// removed code that printed IP address
MPI_Finalize();
return 0;
}

который напечатал IP-адрес каждой машины дважды.


EDIT_2

Если я печатаю (только) сетку, как в примере, я получаю для одного компьютера:

Processes grid pattern:
0 1
2 3

и на двоих:

Processes grid pattern:

2

Решение

Исполняемые файлы не были одинаковыми в обоих узлах!


Когда я настроил кластер, мне было очень трудно, поэтому, когда у меня возникли проблемы с монтированием, я просто пропустил его. Так что теперь изменения будут появляться только в одном узле. Код будет вести себя странно, если только часть (или весь) кода не будет одинаковым.

1

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


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector