MPI - Drukowanie w zamówieniu

Próbuję napisać funkcję w C, gdzie każdy procesor drukuje własne dane. Oto co mam:

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

Nie działa z jakiegoś powodu. Tablice są drukowane w całości pomieszane. Czy masz jakieś pojęcie o tym, dlaczego to nie działa? Jakieś inne pomysły, które działają? Jeśli to możliwe, nie chcę wysyłać całej tablicy w procesie głównym. Nie chcę też używać funkcji prekompilowanych.

questionAnswers(4)

yourAnswerToTheQuestion