हाइपर थ्रेड कितना स्पीडअप देता है? (सिद्धांत रूप में)


38

मैं सोच रहा हूं कि हाइपर थ्रेडेड सीपीयू से सैद्धांतिक गति क्या है। 100% समांतरकरण, और 0 संचार - दो सीपीयू को 2 का स्पीडअप माना जाता है। हाइपर थ्रेडेड सीपीयू के बारे में क्या?

जवाबों:


59

जैसा कि दूसरों ने कहा है, यह पूरी तरह से कार्य पर निर्भर करता है।

इसे समझने के लिए, आइए एक वास्तविक बेंचमार्क देखें:

यहाँ छवि विवरण दर्ज करें

यह मेरे मास्टर थीसिस (वर्तमान में ऑनलाइन उपलब्ध नहीं) से लिया गया था।

यह स्ट्रिंग मिलान एल्गोरिदम के सापेक्ष गति-अप 1 दिखाता है (हर रंग एक अलग एल्गोरिथ्म है)। हाइपरथ्रेडिंग के साथ दो इंटेल Xeon X5550 क्वाड-कोर प्रोसेसर पर एल्गोरिदम को निष्पादित किया गया था। दूसरे शब्दों में: कुल 8 कोर थे, जिनमें से प्रत्येक दो हार्डवेयर थ्रेड्स को निष्पादित कर सकता है (= "हाइपरथ्रेड्स")। इसलिए, बेंचमार्क 16 थ्रेड्स के साथ गति-अप का परीक्षण करता है (जो समवर्ती थ्रेड्स की अधिकतम संख्या है जिसे यह कॉन्फ़िगरेशन निष्पादित कर सकता है)।

चार में से दो एल्गोरिदम (नीले और ग्रे) पूरे रेंज में अधिक या कम रैखिक रूप से पैमाने पर हैं। यानी हाइपरथ्रेडिंग से फायदा होता है।

दो अन्य एल्गोरिदम (लाल और हरे रंग में; रंग के अंधे लोगों के लिए दुर्भाग्यपूर्ण विकल्प) बड़े पैमाने पर 8 थ्रेड्स के लिए। इसके बाद, वे स्थिर हो जाते हैं। यह स्पष्ट रूप से इंगित करता है कि ये एल्गोरिदम हाइपरथ्रेडिंग से लाभ नहीं उठाते हैं।

कारण? इस विशेष मामले में यह मेमोरी लोड है; पहले दो एल्गोरिदम को गणना के लिए अधिक मेमोरी की आवश्यकता होती है, और मुख्य मेमोरी बस के प्रदर्शन से विवश होते हैं। इसका मतलब है कि जहां एक हार्डवेयर थ्रेड मेमोरी का इंतजार कर रहा है, वहीं दूसरा निष्पादन जारी रख सकता है; हार्डवेयर थ्रेड्स के लिए एक मुख्य उपयोग-केस।

अन्य एल्गोरिदम को कम मेमोरी की आवश्यकता होती है और बस की प्रतीक्षा करने की आवश्यकता नहीं होती है। वे लगभग पूरी तरह से बाध्य हैं और केवल पूर्णांक अंकगणित (बिट संचालन, वास्तव में) का उपयोग करते हैं। इसलिए, समानांतर निष्पादन के लिए कोई संभावना नहीं है और समानांतर निर्देश पाइपलाइनों से कोई लाभ नहीं है।


1 यानी 4 का स्पीड-अप कारक का अर्थ है कि एल्गोरिथ्म चार गुना तेज गति से चलता है जैसे कि इसे केवल एक धागे से निष्पादित किया गया हो। परिभाषा के अनुसार, तब, प्रत्येक थ्रेड को एक थ्रेड पर निष्पादित करने के लिए 1 के सापेक्ष गति-अप कारक होता है।


सर्वश्रेष्ठ उत्तर :-)
स्किलेव्ज

1
एल्गोरिदम की वास्तविक गति क्या है, कोर की संख्या के खिलाफ साजिश रची गई? यानी इन परीक्षणों में सबसे तेज एल्गोरिथ्म के लिए गति क्या है? बस सोच रहा :)।
पागल

@ crazy2be ब्लू लाइन ( हॉर्सपूल का एल्गोरिदम ) के लिए, रनिंग टाइम 4.16 सेकंड से 0.35 सेकंड से 16 थ्रेड्स के साथ नीचे चला जाता है। तो गति 11.74 है। हालाँकि, यह हाइपर-थ्रेडिंग के साथ है। जब कोर की संख्या के खिलाफ साजिश रची जाती है, तो इस एल्गोरिथ्म की गति 8 कोर पर 7.17 है।
कोनराड रुडोल्फ

5
इस जवाब के साथ एकमात्र समस्या यह है कि मैं केवल एक बार इसे बढ़ा सकता हूं। एक व्यक्तिपरक प्रश्न के लिए इसका एक आश्चर्यजनक उद्देश्यपूर्ण उत्तर;)
जर्नीमैन गीक


20

समस्या यह है, यह कार्य पर निर्भर करता है।

हाइपरथ्रेडिंग के पीछे धारणा मूल रूप से है कि सभी आधुनिक सीपीयू में एक से अधिक निष्पादन मुद्दे हैं। आमतौर पर एक दर्जन के करीब या अब। इंटेगर, फ्लोटिंग पॉइंट, एसएसई / एमएमएक्स / स्ट्रीमिंग (जो भी इसे आज कहा जाता है) के बीच विभाजित।

इसके अतिरिक्त, प्रत्येक इकाई की गति अलग है। यानी किसी चीज़ को प्रोसेस करने के लिए एक पूर्णांक गणित इकाई 3 चक्र हो सकता है, लेकिन 64 बिट फ़्लोटिंग पॉइंट डिवीजन 7 चक्र ले सकता है। (ये कुछ भी नहीं आधारित पौराणिक संख्याएं हैं)।

आउट ऑफ ऑर्डर निष्पादन विभिन्न इकाइयों को यथासंभव पूर्ण रखने में मदद करता है।

हालाँकि कोई भी एकल कार्य हर एक निष्पादन इकाई का उपयोग हर पल नहीं करेगा। बंटवारे के धागे भी पूरी तरह से मदद नहीं कर सकते हैं।

इस प्रकार सिद्धांत यह दिखावा करके बन जाता है कि एक दूसरा सीपीयू है, एक और धागा उस पर चल सकता है, उपलब्ध निष्पादन इकाइयों का उपयोग करके अपने ऑडियो ट्रांसकोडिंग का उपयोग न करें, जो कि 98% एसएसई / एमएमएक्स सामान है, और इंट और फ्लोट इकाइयां पूरी तरह से हैं। कुछ सामान को छोड़कर निष्क्रिय।

मेरे लिए, यह एक एकल सीपीयू दुनिया में अधिक समझ में आता है, वहाँ एक दूसरे सीपीयू को फेकने से धागे आसानी से उस थ्रेशोल्ड सीपीयू को संभालने के लिए थोड़ा (यदि कोई हो) अतिरिक्त कोडिंग पार करने की अनुमति देता है।

3/4/6/8 कोर वर्ल्ड में, 6/8/12/16 सीपीयू होने से, मदद मिलती है? पता नहीं। इतना ज्यादा? हाथ में कार्यों पर निर्भर करता है।

तो वास्तव में आपके सवालों का जवाब देने के लिए, यह आपकी प्रक्रिया में उन कार्यों पर निर्भर करेगा, जो निष्पादन इकाइयों का उपयोग कर रहे हैं, और आपके सीपीयू में, जो निष्पादन इकाइयाँ निष्क्रिय हैं / अप्रयुक्त हैं और उस दूसरे नकली सीपीयू के लिए उपलब्ध हैं।

कम्प्यूटेशनल सामान के कुछ 'वर्गों' को लाभ के लिए कहा जाता है (आमतौर पर उदारतापूर्वक)। लेकिन कोई कठिन और तेज़ नियम नहीं है, और कुछ वर्गों के लिए, यह चीजों को धीमा कर देता है।


2
हालाँकि मैं "1.7 टाइम स्पीडअप" जैसी चीज़ की तलाश में था, लेकिन यह जवाब बहुत अच्छा है क्योंकि यह इस समस्या पर एक काले और सफेद नज़र नहीं आता है।
मिखाइल

@ मिखाइल: मुद्दा यह है कि कोई सरल कारक नहीं है - यह निर्भर करता है, जैसे जीवन में अक्सर :-)।
sleske

4
जिस्ट सही है। एक वक्रोक्ति, हालांकि: कोई एक प्राथमिक कारण नहीं है कि एक कोर को कई कोर की तुलना में हाइपरथ्रेडिंग से अधिक लाभ क्यों होना चाहिए। गलत कार्य के लिए, न तो लाभ। सही कार्य के लिए, एक ही कारक द्वारा दोनों लाभ।
कोनराड रुडोल्फ

@Konrad: मुझे लगता है कि मुझे जो बिंदु मिल रहा था, वह एक कोर और दो कोर के बीच का अंतर 4 और 8 या 2 के अंतर से अधिक मूल्यवान हो सकता है। 4. I एक दूसरे कोर होने, खराब थ्रेडेड ऐप के लिए मदद कर सकता है थोड़ा और अधिक।
जियोफेक

"एक खराब पिरोया अनुप्रयोग के लिए" - यह महत्वपूर्ण बिट है। लेकिन वास्तविक रूप से, अधिकांश एप्लिकेशन का थ्रेडिंग समर्थन खराब है, इसलिए आपके पास एक बिंदु है।
कोनराड रुडोल्फ

5

मेरे पास जियोफेक के उत्तर में जोड़ने के लिए कुछ महत्वपूर्ण सबूत हैं कि मेरे पास वास्तव में एक कोर आई 7 सीपीयू (4-कोर) है जो हाइपरथ्रेडिंग के साथ है और वीडियो ट्रांसकोडिंग के साथ थोड़ा खेला है, जो एक ऐसा काम है जिसके लिए संचार और सिंक्रनाइज़ेशन की मात्रा की आवश्यकता होती है लेकिन पर्याप्त है समानता है कि आप प्रभावी रूप से एक प्रणाली को पूरी तरह से लोड कर सकते हैं।

कितने सीपीयू के साथ खेलने का मेरा अनुभव आम तौर पर 4 हाइपरथ्रेडेड "अतिरिक्त" कोर का उपयोग करके कार्य को सौंपा गया है जो प्रसंस्करण शक्ति के लगभग 1 अतिरिक्त सीपीयू के बराबर के बराबर है। अतिरिक्त 4 "हाइपरथ्रेडेड" कोर ने 3 से 4 "असली" कोर के रूप में उपयोग करने योग्य प्रसंस्करण शक्ति की समान मात्रा के बारे में जोड़ा।

यह कड़ाई से उचित परीक्षण नहीं है क्योंकि सभी एन्कोडिंग थ्रेड्स सीपीयू में समान संसाधनों के लिए प्रतिस्पर्धा कर रहे होंगे, लेकिन मेरे लिए यह समग्र प्रसंस्करण शक्ति में कम से कम मामूली वृद्धि को दर्शाता है।

यह दिखाने का एकमात्र वास्तविक तरीका है कि यह वास्तव में मदद करता है या नहीं, कुछ अलग इंटर्गर / फ़्लोटिंग पॉइंट / एसएसई प्रकार के परीक्षण एक ही समय में हाइपरथ्रेडिंग सक्षम और अक्षम के साथ एक सिस्टम पर चलेंगे और देखेंगे कि नियंत्रित नियंत्रण में कितनी प्रसंस्करण शक्ति उपलब्ध है वातावरण।


1
अच्छी तरह से एक स्पष्ट बिंदु - यह आवेदन पर निर्भर है। मुझे यकीन है कि कोर 0 के बाद से उच्च संचार कंप्यूटिंग को चलाया जा सकता है और कोर 0-h उसी कैश के माध्यम से संचार करेगा, बिना धीमी रैम का उपयोग किए।
मिखाइल

1
@ मिखाइल, तो समस्या यह है कि यदि दोनों थ्रेड्स को बड़ी मात्रा में प्रसंस्करण शक्ति की आवश्यकता होती है, तो वे दोनों समान संसाधनों के लिए प्रतिस्पर्धा करेंगे और सीपीयू साझा L3 कैश (i7 में L1 और L2 कैश) के माध्यम से संचार करना बेहतर होगा। प्रति कोर और एक साझा L3 कैश) या यहां तक ​​कि सिस्टम मेमोरी और उनके कार्यों को अलग से करना। यह सब एक बड़े पैमाने पर है झूलों और राउंडअबाउट व्यायाम ...
Mokubai

3

यह सीपीयू और काम के बोझ पर बहुत कुछ निर्भर करता है जैसा कि दूसरों ने कहा है।

इंटेल का कहना है :

हाइपर-थ्रेडिंग तकनीक के साथ Intel® Xeon® प्रोसेसर MP पर मापा गया प्रदर्शन इस तकनीक के लिए सामान्य सर्वर एप्लिकेशन बेंचमार्क पर 30% तक का प्रदर्शन लाभ दिखाता है।

(यह मुझे थोड़ा रूढ़िवादी लगता है।)

और यहाँ अधिक संख्या के साथ एक और लंबा पेपर है (जो मैंने अभी तक पढ़ा नहीं है) । उस पेपर से एक दिलचस्प बात यह है कि हाइपरथ्रेडिंग कुछ कार्यों के लिए थिन को धीमा कर सकता है।

एएमडी का बुलडोजर वास्तुकला दिलचस्प हो सकता है । वे प्रत्येक कोर को प्रभावी रूप से 1.5 कोर के रूप में वर्णित करते हैं। यह अति-हाइपरथ्रेडिंग या उप-मानक मल्टी-कोर की तरह है जो इस बात पर निर्भर करता है कि आप इसके संभावित प्रदर्शन के प्रति कितने आश्वस्त हैं। उस टुकड़े में संख्या 0.5x और 1.5x के बीच एक टिप्पणी गति-अप का सुझाव देती है।

अंत में, प्रदर्शन भी ऑपरेटिंग सिस्टम पर निर्भर है। उम्मीद है कि OS, CPU को हाइपरथ्रेड्स के लिए वास्तविक सीपीयू के लिए प्रक्रिया भेजेगा जो केवल सीपीयू के रूप में हैं। अन्यथा एक दोहरे कोर सिस्टम में, आपके पास एक निष्क्रिय सीपीयू और दो धागे थ्रेडिंग के साथ एक बहुत व्यस्त कोर हो सकता है। मुझे याद है कि यह विंडोज 2000 के साथ हुआ था, हालांकि, निश्चित रूप से, सभी आधुनिक ओएस उपयुक्त रूप से सक्षम हैं।


1
OS को यह सुनिश्चित करना होगा कि थ्रेड्स एक-दूसरे को क्लॉक-ब्लॉक न करें :)
मिखाइल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.