2012-01-12 17 views
10

Ho un codice per stampare un array 2D sullo standard output. Il problema è che quando lo eseguo, ogni processo scrive sull'output e i dati si sovrappongono, rendendolo inutilizzabile.Sezione critica in MPI?

Come posso creare una sezione critica in MPI in modo che solo un processo alla volta entri nella sezione in cui visualizzo l'output?

Sto usando OpenMPI.

risposta

14

Separarlo utilizzando 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

Si potrebbe desiderare di aumentare 'rank' da qualche parte. :) – suszterpatt

+0

Heh, grazie. _Too much_ pseudo code non è buono ;-) – jman

+0

Grazie per la risposta! È un po 'meglio ma si sovrappone ancora :( – alexsardan

Problemi correlati