Код 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-адрес каждой машины дважды.


РЕДАКТИРОВАТЬ_2

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

Processes grid pattern:
0 1
2 3

и на двоих:

Processes grid pattern:

person gsamaras    schedule 05.08.2015    source источник
comment
К сожалению, я не знаком с BLACS. Можете ли вы попытаться привести минимальный пример, показывающий вашу проблему? Например, мы не знаем, что делает init, поэтому проблема может быть скрыта там.   -  person mort    schedule 05.08.2015
comment
@mort я обновился и теперь читателю все понятно!   -  person gsamaras    schedule 05.08.2015
comment
Можете ли вы запустить простой пинг-понговый тест MPI на двух узлах, чтобы убедиться, что MPI настроен правильно. Если вы используете Intel MPI, должен быть набор тестов MPI, который называется IMB, в который включен тест, а также несколько других тестов. Эти тесты — хороший способ убедиться, что MPI работает правильно на обоих узлах.   -  person Matt    schedule 05.08.2015
comment
@Matt, проверь мое редактирование. Я использую MPICH2. Конфигурация в порядке.   -  person gsamaras    schedule 05.08.2015
comment
Спасибо, вы пытались добавить часть из примера, которая выводит информацию о сетке, используя предложение if(myrow == r && mycol == c) и cout << myid << " " << flush;, чтобы увидеть, что такое информация о гирде? С Intel MPI вы можете установить переменную окружения I_MPI_DEBUG=5, чтобы получить гораздо больше отладочной информации при запуске программы MPI. похоже, что MPICH использует MPIEXEC_DEBUG, но у меня возникли проблемы с поиском дополнительной информации об этом   -  person Matt    schedule 05.08.2015
comment
@ Мэтт действительно ценит то, что ты пытаешься мне помочь. Если мы решим это, я буду давать вам плюсы везде :P Проверьте мое редактирование, оно ничего не покажет! Насчет MPIEXEC_DEBUG понятия не имею и гугл не помог!   -  person gsamaras    schedule 05.08.2015
comment
После более подробного изучения примера, на котором вы основывались, есть шаг, на котором MPI_Bcast(...) используется для передачи размеров матрицы и других входных данных узлам до использования Cblacs_barrier(...). Исключение трансляции на одном узле не будет проблемой, но на нескольких узлах возможны проблемы. Я буду работать над тестированием некоторых вариантов примера на своих домашних узлах, но я могу использовать только tcp, так как у меня дома нет высокоскоростного интерконнекта.   -  person Matt    schedule 05.08.2015
comment
@Matt, добавив шаг широковещания, приведет к тому, что ncols будет напечатано двумя процессами на главном узле (из которого я могу проверить вывод). Но почему? Я имею в виду, что все переменные, которые транслируются, уже имеют значение в строке их объявления!!! Если у вас есть обновление из ваших тестов, дайте мне знать, пожалуйста. quickmeme.com/img/a2/   -  person gsamaras    schedule 06.08.2015
comment
Я понял, что у меня нет доступа к MKL на моих домашних серверах, поэтому я работаю над настройкой обоих с соответствующими пакетами. Завтра я смогу получить доступ к небольшому кластеру с инструментами Intel, на котором я смогу протестировать .   -  person Matt    schedule 06.08.2015
comment
@Matt, спасибо, что следите за постом! Я получил студенческую версию Intel® Parallel Studio XE здесь: software.intel.com/en -us/академический/swdevtools   -  person gsamaras    schedule 06.08.2015
comment
@Мэтт решил. :D :D Я неделю был на греческом острове и отлаживал... правильный код!!! Проверьте мой ответ. Спасибо за вашу помощь, которая помогла мне переместить мои мысли, пока я не нашел решение. Я проголосую за два ваших ответа, которые мне нравятся, в знак благодарности!   -  person gsamaras    schedule 07.08.2015
comment
Я рад, что вы смогли решить эту проблему, конфигурация и управление кластером включают в себя множество движущихся частей, если вы планируете выполнять много работы в среде кластера, я бы предложил использовать какой-то инструмент управления и подготовки кластера, например warewulf или ROCKS, они могут значительно упростить многие аспекты управления кластером. Также доступно множество эталонных проектов, которые используют оба инструмента и проходят весь процесс построения кластера с заведомо хорошей конфигурацией.   -  person Matt    schedule 07.08.2015


Ответы (1)


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


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

person gsamaras    schedule 07.08.2015
comment
Спасибо за ваши голоса. Если у вас есть какие-либо вопросы о настройке и обслуживании кластера, сообщество Server Fault очень хорошо разбирается во многих связанных темах. . Если вы считаете, что это будет полезно, я могу написать руководство по основам настройки и обслуживания кластера и опубликовать его где-нибудь. - person Matt; 10.08.2015
comment
Ну, @Matt, я проголосовал за то, что мне понравилось! Это очень мило с вашей стороны, но я просто хотел это для уни проекта, так что это почти сделано, поэтому я не буду тестировать вашу статью (у меня не будет доступа к кластеру), но если хотите, я могу ее прочитать . Спасибо еще раз! - person gsamaras; 17.08.2015