2012-01-12 28 views
10

Standart çıktıya bir 2D dizi yazdırmak için kodum var. Sorun şu ki, onu çalıştırdığımda, her işlem çıktıya yazıyor ve veri kullanılamaz hale getiriyor.MPI'da kritik bölüm?

MPI'de kritik bir bölüm oluşturabilirim, böylece çıktıyı görüntülediğim bölümü yalnızca bir işlem bir defada girer mi?

OpenMPI kullanıyorum.

cevap

14

MPI_Barriers kullanarak ayırın.

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

Oralarda bir yerde 'rank 'değerini artırmak isteyebilirsiniz. :) – suszterpatt

+0

Heh, teşekkürler. _Too much_ sözde kodu iyi değil ;-) – jman

+0

Cevabınız için teşekkürler! Bu biraz daha iyi ama yine de örtüşüyor :( – alexsardan