У меня есть программа на C++, которая использует библиотеку openMPI для передачи сообщений между разными процессорами. Это параллельная программа, которая использует генетический алгоритм, чтобы найти хорошее решение проблемы коммивояжера. Я пытаюсь настроить среду MPI на двух двухпроцессорных компьютерах у себя дома, чтобы я мог ее запустить. Когда я впервые создал эту программу год назад, я смог нормально запустить ее на кластере, который не был настроен мной. Проблема, с которой я столкнулся сейчас, заключается в том, что всякий раз, когда я запускаю его, все процессы говорят, что они имеют ранг 0. Если у меня есть 3 узла, вместо того, чтобы быть узлами 1, 2 и 3, все они являются узлами 0. Если кто-нибудь знает, что происходит, я был бы признателен за помощь. Спасибо.





Возможно, у вас неправильная инициализация или у вас есть ошибка при проверке ранга. Это должен быть правильный способ сделать это:
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("I am process %d of %d.\n", rank, size);
Но я предполагаю, что вы сделали это правильно, поэтому я согласен с Harleqin, показ используемых вами команд / сценариев будет полезным.
Я выяснил, в чем проблема. У меня было установлено два пакета, в каждом из которых использовалась команда mpirun. Я считаю, что это были пакеты как openmpi, так и mpich. Я удалил openmpi, и все заработало.
Возможно, вы могли бы показать, какие команды / сценарии вы используете для настройки процессов?