2012-01-12 16 views
10

मेरे पास मानक आउटपुट में 2 डी सरणी मुद्रित करने के लिए कुछ कोड है। समस्या यह है कि जब मैं इसे चलाता हूं, तो प्रत्येक प्रक्रिया आउटपुट को लिखती है और डेटा ओवरलैप होता है, जो इसे अनुपयोगी प्रदान करता है।गंभीर खंड?

मैं एमपीआई में एक महत्वपूर्ण अनुभाग कैसे बना सकता हूं ताकि एक समय में केवल एक ही प्रक्रिया उस अनुभाग में प्रवेश करे जहां मैं आउटपुट प्रदर्शित करता हूं?

मैं ओपनएमपीआई का उपयोग कर रहा हूं।

उत्तर

14

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

आप कहीं कहीं 'रैंक' में वृद्धि करना चाहते हैं। :) – suszterpatt

+0

हे, धन्यवाद। _Too much_ छद्म कोड अच्छा नहीं है ;-) – jman

+0

उत्तर के लिए धन्यवाद! यह थोड़ा बेहतर है लेकिन अभी भी ओवरलैप है :( – alexsardan

संबंधित मुद्दे