एक वैज्ञानिक क्लस्टर पर समांतर प्रसंस्करण का उपयोग करते समय $ समय का अर्थ है?

मैं अपने स्कूल में एक वैज्ञानिक क्लस्टर पर अपना परिमित-अंतर कार्यक्रम चला रहा हूं। कार्यक्रम कोड समानांतर करने के लिए openmpi का उपयोग करता है।

जब सीरियल में कार्यक्रम मुझे मिलता है:

real    78m40.592s
user    78m34.920s
sys     0m0.999s

जब मैं इसे 8 एमपीई प्रोसेसर के साथ चलाता हूं तो मुझे मिलता है:

real    12m45.929s
user    101m9.271s
sys     0m29.735s

जब मैं 16 एमपीआई प्रोसेसर के साथ इसे चलाता हूं तो मुझे मिलता है:

real    4m46.936s
user    37m30.000s
sys     0m1.150s

तो मेरा सवाल यह है कि: यदि उपयोगकर्ता का समय कुल CPU समय है, तो उपयोगकर्ता अलग-अलग प्रोसेसर के लिए एक-दूसरे से अलग क्यों होते हैं?

धन्यवाद,

एंथनी जी

2
जोड़ा
विचारों: 1
यहां जवाब देखें: stackoverflow.com/questions/200 9 4547/& hellip; एमपीआई कार्यक्रमों के लिए mpi_wtime() का उपयोग करें
जोड़ा लेखक High Performance Mark, स्रोत

2 उत्तर

धारावाहिक में, आपका कोड 78m40s और असली और उपयोगकर्ता में लगभग समान होता है।

जब आप 8 प्रक्रियाओं के साथ चलते हैं, जो मुझे लगता है कि वे सभी एक ही मशीन (नोड) पर चल रहे हैं, तो कुल सीपीयू समय 101 एम 9 है। यह बहुत बड़ा है, मुझे लगता है कि आप या तो नोड या स्मृति अतिसंवेदनशीलता का अधिभार का सामना करना पड़ा है। लेकिन जैसा कि आप 8 कोर का उपयोग कर रहे हैं, कुल दीवार घड़ी का समय 101m9/8 = 12m45 है। आप उस परीक्षण को फिर से शुरू करने का प्रयास कर सकते हैं और देख सकते हैं कि क्या होता है।

जब आप 16 प्रक्रियाओं के साथ दौड़ते हैं, जो मुझे लगता है कि दो नोड्स पर भेजा जाता है, वास्तविक समय 4 एम 46 है, जो लगभग 78m40/16. है लेकिन असली समय चल रहा है सभी प्रोसेसिंग का संचयी सीपीयू समय उसी कोड पर mpirun के रूप में; time कमांड में अन्य नोड्स पर चल रहे mpi प्रक्रियाओं के बारे में जानने का कोई तरीका नहीं है; 37m30 लगभग 78m40/2 है।

3
जोड़ा
मुझे एहसास नहीं हुआ कि उपयोगकर्ता का समय सिर्फ एक नोड के लिए था। आपका जवाब वास्तव में सहायक था। मैंने अपने कुछ कोड को फिर से चलाया और (उपयोगकर्ता समय) * (# नोड्स) सभी प्रोसेसर कॉन्फ़िगरेशन के लिए लगभग उसी के बारे में आया।
जोड़ा लेखक Anthony, स्रोत
मैंने अपनी रिपोर्ट में परिणामों के बारे में जो सोचा था, मैंने लिखा था। रिपोर्ट से लिंक करें
जोड़ा लेखक Anthony, स्रोत
"यह बहुत बड़ा है, मुझे लगता है कि आपको या तो नोड या मेमोरी ओवरकंसम्प्शन का ओवरलोडिंग का सामना करना पड़ा है।" मैं कहूंगा कि उसने Amdahl का कानून
जोड़ा लेखक Hristo Iliev, स्रोत
@HristoIliev मैंने पहले सोचा था लेकिन फिर मैंने 16 कोर स्केल के साथ दूसरा उदाहरण लगभग पूरी तरह से देखा, इसलिए इसे 8 प्रोसेस के साथ भी स्केल करना चाहिए। और ओपी प्रारंभिक रूप से रिपोर्ट की तुलना में नए समय रैखिक स्केलिंग के करीब पुष्टि करता है (ऊपर टिप्पणी देखें।)
जोड़ा लेखक damienfrancois, स्रोत

कंप्यूटर सिस्टम पर आमतौर पर दो अलग-अलग विचार हैं।

  1. वॉल-घड़ी का समय (चलिए इसे टी कहते हैं): यह वह समय है जो आपकी घड़ी पर जाता है, जबकि आपका प्रोग्राम निष्पादित होता है।
  2. सीपीयू समय (चलिए इसे सी कहते हैं): यह संचयी समय है जो आपके प्रोग्राम पर काम कर रहे सभी सीपीयू ने आपके कोड को निष्पादित करने में व्यतीत किया है।

पी सीपीयू पर चलने वाले आदर्श समांतर कोड के लिए, टी = सी/पी। इसका मतलब है, यदि आप आठ सीपीयू पर कोड चलाते हैं, तो कोड आठ गुना तेज है, लेकिन काम को आठ सीपीयू में वितरित किया गया है, जिसे सभी को सी/पी सेकेंड/मिनट के लिए निष्पादित करने की आवश्यकता है।

In reality, there's often overhead in the execution. With MPI, you've got communication overhead. This usually cause a situation where T>C/P. The higher T becomes, the less efficient the parallel code is.

लिनक्स जैसी एक ऑपरेटिंग सिस्टम आपको वॉल-घड़ी के समय की तुलना में अधिक चीजें बता सकती है। यह आमतौर पर उपयोगकर्ता और sys समय की रिपोर्ट करता है। उपयोगकर्ता समय CPU समय है (बिल्कुल नहीं, लेकिन अभी के लिए उचित बंद) कि एप्लिकेशन आपके कोड में खर्च करता है। Sys समय लिनक्स कर्नेल में समय है।

चीयर्स,         -माइकल

2
जोड़ा