Параллельное выполнение MPI-программы на одном компьютере

#c #mpi

#c #mpi

Вопрос:

Я хочу запускать параллельные коды на одном компьютере с процессором core i7. Я могу скомпилировать свой код, но у меня проблемы с его запуском.

Я компилирую свой код с помощью mpicxx, и когда я запускаю его с помощью «mpirun -np 8 . / a.out», выполняется только один процесс. Моя операционная система — linux ubuntu 11.04.

Работа что я должен делать?

Например, я хочу запустить этот код:

 #include <iostream>
#include <mpi.h>
using namespace std;

int main(int argc, char **argv)
{
    int mynode, totalnodes;
    MPI_Init(amp;argc,amp;argv);
    MPI_Comm_size(MPI_COMM_WORLD, amp;totalnodes);
    MPI_Comm_rank(MPI_COMM_WORLD, amp;mynode);
    cout << "Hello world from process " << mynode;
    cout << " of " << totalnodes << endl;
    MPI_Finalize();
}
  

Я использую mpich2 с mpirun — версия: 1.3.1

Комментарии:

1. вы должны сообщить нам, какую версию MPI вы используете.

2. Также какую ВЕРСИЮ mpich2 вы используете. Они изменили диспетчер процессов с MPD на Hydra между версиями 1.2 и 1.3, поэтому подробности о том, как запустить параллельное приложение, меняются. Вы можете видеть, что он работает под управлением mpirun —version.

3. «Предположим»? Meh, у вас есть эта проблема в вашей конкретной версии. В последней версии вы должны использовать mpiexec и правильно определенный машинный файл.

4. Есть несколько альтернатив: вы можете использовать бэкпорт, взять последний пакет из «экспериментальной» ветки вашего дистрибутива и установить его вручную или путем настройки диспетчера пакетов, или просто скомпилировать его из исходного пакета дистрибутива. Однако это вопрос, который следует задавать индивидуально и, возможно, на другом сайте вопросов и ответов.

5. Что именно происходит, когда вы пытаетесь запустить его, как указано выше?

Ответ №1:

Если вы используете операционную систему ubuntu, вы также можете выполнять свои коды с помощью mpiexec -n 8 /path/to/application, и машинный файл не требуется, просто убедитесь, что вы правильно установили библиотеку mpich. для этого вы можете использовать synaptic package manager для установки библиотеки.

Ответ №2:

В вашей версии mpich2 рекомендуется использовать mpiexec вместо mpirun.

Чтобы запустить приложение, вы должны написать машинный файл с таким синтаксисом:

 machine1[:number of cores]
...
machinen[:number of cores]
  

Одна строка для каждой машины, с необязательным количеством ядер, перед которым стоит двоеточие, пример:

 node0:2
node1:3
  

Затем вы вызываете свое приложение таким образом:

 mpiexec -f machinefile -n <number of processes> yourapplication
  

Попробуйте и расскажите нам, что у вас получится.

Помните, что в конфигурации по умолчанию mpich2 требует конфигурации ssh без входа в систему для запуска процессов.

Комментарии:

1. Я не знаю, как я могу записать машинный файл

2. Для вашего простого случая вам нужен файл с именем machinefile в одной строке localhost:8 . Затем запустите mpiexec -f machinefile -n 8 /path/to/application arguments .

3. теперь у меня проблема с компиляцией. ошибка usr /bin / ld: не удается найти -lcr collect2: ld вернул 1 статус выхода диспетчер процессов работал, но компилятор теперь не работает!

4. это сайт вопросов и ответов, а не сайт «мы заставляем ваши вещи работать». Задавайте каждый вопрос отдельно.