Alors disons que j'ai un programme MPI avec 2 processus, rang 0 et rang 1.MPI_Recv - Comment déterminer le nombre?
int i[20], j[20], temp, size;
En cours de rang 0, je
for(temp=0; temp<20; temp++)
i[temp] = temp;
MPI_Send(i, 15, MPI_INT, 1, 1, MPI_COMM_WORLD);
et Traitons dire avec le rang 1, alors est-ce que
// At this point, size is declared, but not assigned any value.
MPI_Recv(j,size, MPI_INT, 0, 1, MPI_COMM_WORLD):
cout << "I have received " << size << " elements" ;
Ma question est, dans l'énoncé ci-dessus, est-ce que la "taille" doit être déclarée? Ou est-ce que MPI_Recv "sait" en quelque sorte qu'il reçoit 15 éléments, et définit automatiquement size = 15? Si la taille n'est pas définie, qu'arrive-t-il au code? Fondamentalement, ma question est, J'envoie un nombre différent d'éléments à des processeurs avec des rangs différents, tous les messages provenant du rang 0. Je veux savoir si je devrais d'abord envoyer la taille à travers, puis préparer les processeurs à recevoir autant d'éléments, ou si je peux simplement envoyer le tableau et les processus choisir automatiquement la taille à partir de là.