2 Stimmen

Mpi-Nutzung in Windows

Ich habe mpi in Windows installiert und kann seine Bibliotheken verwenden. Das Problem ist, dass in Windows, wenn ich schreibe

mpiexec -n 4 proj.exe 

in die Eingabeaufforderung einträgt, führt es nicht die richtigen Operationen aus. 4 verschiedene Prozesse verwenden die gesamte Codedatei separat. Sie verhalten sich nicht wie parallele Prozesse, die nur in den Zeilen MPI_Init und MPI_Finalize arbeiten. Wie kann ich dieses Problem beheben? Ist es unmöglich, mit MPI unter Windows zu arbeiten.

P.s: Ich verwende Dev C++

17voto

J Teller Punkte 1401

MPI läuft nach Ihren Angaben korrekt - stattdessen sind Ihre Annahmen falsch. In jeder MPI-Implementierung (die ich jedenfalls benutzt habe) wird das gesamte Programm von Anfang bis Ende auf jede Prozess. Die Funktionen MPI_Init und MPI_Finalize sind erforderlich, um MPI-Strukturen für jeden Prozess auf- und abzubauen, aber sie den Beginn und das Ende der parallelen Ausführung nicht angeben . Der Beginn des parallelen Abschnitts ist die erste Anweisung in main, und das Ende ist die endgültige Rückkehr.

Ein gutes "Vorlagen"-Programm für das, was Sie zu wollen scheinen, wäre (auch beantwortet in Wie kann man dieses Problem mit MPI beschleunigen? ):

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;  
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X