Bonjour à tous!
J'ai programmé un programme de calcul mécanique par élément finis en c++ et j'aimerais optimisé le temps de calcul en utilisant les deux processeurs de ma machine (pour le moment je suis en single thread). En effet la phase la plus longue concerne les constructions de matrices qui peuvent être aisément parallélisées
Je suis sous Windows XP et utilise code::blocks + MinGW .
J'ai donc cherché à installer MPICH2 qui propose un installateur dédié à windows (installation ok!) et j'ai fait les liens dans le compilateur pour pouvoir compilé un code de test:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <mpi.h>
#include <iostream>

int main(int argc, char* argv[])
{
  MPI_Init(&argc, &argv);

  int rank;
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  if (rank == 0) {
    int value = 17;
    int result = MPI_Send(&value, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
    if (result == MPI_SUCCESS)
      std::cout << "Rank 0 OK!" << std::endl;
  } else if (rank == 1) {
    int value;
    int result = MPI_Recv(&value, 1, MPI_INT, 0, 0, MPI_COMM_WORLD,
			  MPI_STATUS_IGNORE);
    if (result == MPI_SUCCESS && value == 17)
      std::cout << "Rank 1 OK!" << std::endl;
  }
  MPI_Finalize();
  return 0;
}
La compilation se passe même si j'ai des warning:

C:\Program Files\MPICH2\include\mpicxx.h|384|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|384|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|384|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|384|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|384|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|385|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|385|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|385|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|385|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|386|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|386|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|386|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1447|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1447|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1447|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1447|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1447|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1448|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1448|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1448|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1448|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1449|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1449|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1449|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1876|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1876|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1876|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1876|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1876|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1877|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1877|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1877|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1877|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1878|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1878|warning: statement has no effect|
C:\Program Files\MPICH2\include\mpicxx.h|1878|warning: statement has no effect|
||=== Build finished: 0 errors, 36 warnings ===|

C'est apres que je n'ai pas bien compris comment ca fonctionne. Peut-on lancer l'executable directement ou faut-il utiliser le wrapper fourni avec MPICH2.

En lancant le .exe directement j'ai des erreurs à l'execution:

Fatal error in MPI_Send: Invalid rank, error stack:
MPI_Send(174): MPI_Send(buf=0022FF40, count=1, MPI_INT, dest=1, tag=0, MPI_COMM_
WORLD) failed
MPI_Send(99).: Invalid rank has value 1 but must be nonnegative and less than 1

job aborted:
process: node: exit code: error message:
0: localhost: 1: Fatal error in MPI_Send: Invalid rank, error stack:
MPI_Send(174): MPI_Send(buf=0022FF40, count=1, MPI_INT, dest=1, tag=0, MPI_COMM_
WORLD) failed
MPI_Send(99).: Invalid rank has value 1 but must be nonnegative and less than 1

Merci d'avance pour votre aide!