2008-12-07 17 views
7

के रूप में चलते हैं मेरे पास एक सी ++ प्रोग्राम है जो विभिन्न प्रोसेसर के बीच संदेशों को पास करने के लिए ओपनएमपीआई लाइब्रेरी का उपयोग कर रहा है। यह एक समांतर कार्यक्रम है जो यात्रा विक्रेता की समस्या के लिए एक अच्छा समाधान पाने के लिए आनुवांशिक एल्गोरिदम का उपयोग करता है। मैं अपने घर पर अपने दो दोहरे प्रोसेसर कंप्यूटरों पर एमपीआई पर्यावरण स्थापित करने की कोशिश कर रहा हूं ताकि मैं इसे चला सकूं। जब मैंने पहली बार एक साल पहले इस कार्यक्रम को बनाया था, तो मैं इसे क्लस्टर पर ठीक से चलाने में सक्षम था जो मेरे द्वारा स्थापित नहीं किया गया था। अब जो समस्या है, वह यह है कि जब भी मैं इसे चलाता हूं, तो सभी प्रक्रियाएं कह रही हैं कि वे रैंक 0 के हैं। यदि मेरे पास 3 नोड्स हैं, तो उनके बजाय नोड्स 1, 2, और 3 होने के बजाय, वे सभी नोड 0 हैं। अगर कोई जानता है कि क्या हो रहा है, तो मैं निश्चित रूप से कुछ मदद की सराहना करता हूं। धन्यवाद।ओपनएमपीआई: सभी नोड्स नोड 0

+0

शायद आप दिखा सकते हैं कि प्रक्रियाओं को सेट करने के लिए आप किस आदेश/स्क्रिप्ट का उपयोग करते हैं? – Svante

उत्तर

1

शायद आपका प्रारंभिक गलत है या आपको रैंक की जांच करने में कुछ त्रुटि है। यह ऐसा करने के लिए सही तरीके से किया जाना चाहिए:

MPI_Init(&argc, &argv); 
MPI_Comm_size(MPI_COMM_WORLD, &size); 
MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
printf("I am process %d of %d.\n", rank, size); 

लेकिन मुझे लगता है आपको लगता है कि सही था, इसलिए मैं Harleqin करने के लिए सहमत हैं, तो आप मददगार होगा का उपयोग आदेशों/लिपियों दिखा।

3

मुझे पता चला कि समस्या क्या थी। मेरे पास दो पैकेज स्थापित थे जो दोनों mpirun कमांड का इस्तेमाल करते थे। मेरा मानना ​​है कि यह ओपनएमपी और एमपीआईसी पैकेज दोनों था। मैंने ओपनम्पी हटा दी और यह काम किया।

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