MPI - Drucken in einer Bestellung

Ich versuche, eine Funktion in C zu schreiben, in der jeder Prozessor seine eigenen Daten druckt. Folgendes habe ich:

void print_mesh(int p,int myid,int** U0,int X,int Y){
    int i,m,n;
    for(i=0;i<p;i++){
        if(myid==i){
            printf("myid=%d\n",myid);
            for(n=0;n<X;n++){
                for(m=0;m<Y;m++){
                    printf("%d ",U0[n][m]);
                }
                printf("\n");
            }
        }
        else MPI_Barrier(MPI_COMM_WORLD);
    }
}

Es funktioniert aus irgendeinem Grund nicht. Die Arrays werden alle durcheinander gedruckt. Haben Sie einen Einblick, warum dies nicht funktioniert? Irgendwelche anderen Ideen, die funktionieren? Wenn möglich, möchte ich nicht das gesamte Array in einem Master-Prozess senden. Außerdem möchte ich keine vorkompilierten Funktionen verwenden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage