2012-01-12 25 views
10

Tengo un código para imprimir una matriz 2D a la salida estándar. El problema es que cuando lo ejecuto, cada proceso escribe en la salida y los datos se superponen, dejándolo inutilizable.Sección crítica en MPI?

¿Cómo puedo construir una sección crítica en MPI para que solo un proceso a la vez entre en la sección donde visualizo la salida?

Estoy usando OpenMPI.

Respuesta

14

Separando usando MPI_Barriers.

rank = 0; 
while (rank < total_processes) { 
    if (myrank == rank) { 
     printf ("Array printed by rank: %d\n", myrank); 
     print_array(); 
     fflush (stdout); 
    } 
    rank ++; 
    MPI_Barrier(); 
} 
+1

Es posible que desee incrementar 'rank' en alguna parte. :) – suszterpatt

+0

Heh, gracias. _Too much_ pseudo code no es bueno ;-) – jman

+0

¡Gracias por la respuesta! Es un poco mejor, pero aún se superpone :( – alexsardan

Cuestiones relacionadas