Использование Mpi в Windows - PullRequest
       13

Использование Mpi в Windows

2 голосов
/ 06 января 2010

Я установил MPI в Windows, и я могу использовать его библиотеки. Проблема в том, что в windows, когда я пишу

mpiexec -n 4 proj.exe 

в командной строке не выполняет надлежащие операции. 4 разных процесса используют весь файл кода отдельно. Они не ведут себя как параллельные процессы, которые работают только в строках MPI_Init и MPI_Finalize. Как я могу решить эту проблему? Разве невозможно работать MPI в Windows.

P.s: Я использую Dev c ++

1 Ответ

17 голосов
/ 18 февраля 2010

MPI работает правильно, как вы сказали - вместо этого ваши предположения неверны. В каждой реализации MPI (которую я использовал в любом случае) вся программа запускается от начала до конца на каждом процессе. Функции MPI_Init и MPI_Finalize необходимы для настройки и демонтажа структур MPI для каждого процесса, но они не указывают начало и конец параллельного выполнения . Начало параллельного раздела - это первая инструкция в main, а конец - окончательный результат.

Хорошей «шаблонной» программой для того, что, как вам кажется, нужно (также ответили в Как решить эту проблему с помощью MPI ):

int main(int argc, char *argv[]) {
    MPI_Init(&argc, &argv);  
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);  
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);

    if (myid == 0) { // Do the serial part on a single MPI thread
        printf("Performing serial computation on cpu %d\n", myid);
        PreParallelWork();
    }

    ParallelWork();  // Every MPI thread will run the parallel work

    if (myid == 0) { // Do the final serial part on a single MPI thread
        printf("Performing the final serial computation on cpu %d\n", myid);
        PostParallelWork();
    }

    MPI_Finalize();  
    return 0;  
}  
...