MPI - Impressão num pedido

Eu estou tentando escrever uma função em C onde cada processador imprime seus próprios dados. Aqui está o que eu tenho:

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

Não funciona por algum motivo. Os arrays são impressos todos misturados. Você tem alguma idéia de por que isso não funciona? Alguma outra ideia que funcione? Se possível, não quero enviar toda a matriz em um processo mestre. Também não quero usar funções pré-compiladas.

questionAnswers(4)

yourAnswerToTheQuestion