Супер РЕДАКТИРОВАТЬ:
Добавление широковещательного шага приведет к тому, что 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-адрес каждой машины дважды.
РЕДАКТИРОВАТЬ_2
Если я печатаю (только) сетку, как в примере, я получаю для одного компьютера:
Processes grid pattern:
0 1
2 3
и на двоих:
Processes grid pattern:
init
, поэтому проблема может быть скрыта там. - person mort   schedule 05.08.2015if(myrow == r && mycol == c)
иcout << myid << " " << flush;
, чтобы увидеть, что такое информация о гирде? С Intel MPI вы можете установить переменную окруженияI_MPI_DEBUG=5
, чтобы получить гораздо больше отладочной информации при запуске программы MPI. похоже, что MPICH используетMPIEXEC_DEBUG
, но у меня возникли проблемы с поиском дополнительной информации об этом - person Matt   schedule 05.08.2015MPIEXEC_DEBUG
понятия не имею и гугл не помог! - person gsamaras   schedule 05.08.2015MPI_Bcast(...)
используется для передачи размеров матрицы и других входных данных узлам до использованияCblacs_barrier(...)
. Исключение трансляции на одном узле не будет проблемой, но на нескольких узлах возможны проблемы. Я буду работать над тестированием некоторых вариантов примера на своих домашних узлах, но я могу использовать только tcp, так как у меня дома нет высокоскоростного интерконнекта. - person Matt   schedule 05.08.2015ncols
будет напечатано двумя процессами на главном узле (из которого я могу проверить вывод). Но почему? Я имею в виду, что все переменные, которые транслируются, уже имеют значение в строке их объявления!!! Если у вас есть обновление из ваших тестов, дайте мне знать, пожалуйста. quickmeme.com/img/a2/ - person gsamaras   schedule 06.08.2015