2010-01-06 3 views
1

J'ai installé mpi dans Windows et je peux utiliser ses bibliothèques. Le problème est que dans les fenêtres lorsque j'écrisUtilisation de Mpi dans Windows

mpiexec -n 4 proj.exe 

dans l'invite de commande, il ne fait pas les bonnes opérations. 4 processus différents utilisent le fichier de code entier séparément. Ils ne se comportent pas comme des processus parallèles qui ne fonctionnent que dans les lignes MPI_Init et MPI_Finalize. Comment puis-je résoudre ce problème? Est-il impossible de travailler MPI dans Windows.

P.s: J'utilise Dev C++

Répondre

14

MPI fonctionne correctement par ce que vous avez dit - au lieu de vos hypothèses sont incorrectes. Dans chaque implémentation MPI (que j'ai utilisé de toute façon), le programme entier est exécuté du début à la fin sur chaque processus. Les fonctions MPI_Init et MPI_Finalize sont requises pour configurer et démonter les structures MPI pour chaque processus, mais elles ne spécifient pas le début et la fin de l'exécution parallèle . Le début de la section parallèle est la première instruction dans main, et la fin est le retour final.

Un bon programme « modèle » pour ce qu'il semble que vous voulez serait (également répondu à How to speed up this problem by 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; 
} 
+0

De plus, si vous postez en fait un code source, peut-être nous pourrions aider davantage à la façon dont se votre programme MPI pour fonctionner correctement. Sur la base de votre très brève description, vous essayez peut-être d'utiliser la mémoire partagée pour communiquer (ce qui ne fonctionne pas, par définition, dans MPI). –