जवाबों:
जैसा कि दूसरों ने कहा है, यह पूरी तरह से कार्य पर निर्भर करता है।
इसे समझने के लिए, आइए एक वास्तविक बेंचमार्क देखें:
यह मेरे मास्टर थीसिस (वर्तमान में ऑनलाइन उपलब्ध नहीं) से लिया गया था।
यह स्ट्रिंग मिलान एल्गोरिदम के सापेक्ष गति-अप 1 दिखाता है (हर रंग एक अलग एल्गोरिथ्म है)। हाइपरथ्रेडिंग के साथ दो इंटेल Xeon X5550 क्वाड-कोर प्रोसेसर पर एल्गोरिदम को निष्पादित किया गया था। दूसरे शब्दों में: कुल 8 कोर थे, जिनमें से प्रत्येक दो हार्डवेयर थ्रेड्स को निष्पादित कर सकता है (= "हाइपरथ्रेड्स")। इसलिए, बेंचमार्क 16 थ्रेड्स के साथ गति-अप का परीक्षण करता है (जो समवर्ती थ्रेड्स की अधिकतम संख्या है जिसे यह कॉन्फ़िगरेशन निष्पादित कर सकता है)।
चार में से दो एल्गोरिदम (नीले और ग्रे) पूरे रेंज में अधिक या कम रैखिक रूप से पैमाने पर हैं। यानी हाइपरथ्रेडिंग से फायदा होता है।
दो अन्य एल्गोरिदम (लाल और हरे रंग में; रंग के अंधे लोगों के लिए दुर्भाग्यपूर्ण विकल्प) बड़े पैमाने पर 8 थ्रेड्स के लिए। इसके बाद, वे स्थिर हो जाते हैं। यह स्पष्ट रूप से इंगित करता है कि ये एल्गोरिदम हाइपरथ्रेडिंग से लाभ नहीं उठाते हैं।
कारण? इस विशेष मामले में यह मेमोरी लोड है; पहले दो एल्गोरिदम को गणना के लिए अधिक मेमोरी की आवश्यकता होती है, और मुख्य मेमोरी बस के प्रदर्शन से विवश होते हैं। इसका मतलब है कि जहां एक हार्डवेयर थ्रेड मेमोरी का इंतजार कर रहा है, वहीं दूसरा निष्पादन जारी रख सकता है; हार्डवेयर थ्रेड्स के लिए एक मुख्य उपयोग-केस।
अन्य एल्गोरिदम को कम मेमोरी की आवश्यकता होती है और बस की प्रतीक्षा करने की आवश्यकता नहीं होती है। वे लगभग पूरी तरह से बाध्य हैं और केवल पूर्णांक अंकगणित (बिट संचालन, वास्तव में) का उपयोग करते हैं। इसलिए, समानांतर निष्पादन के लिए कोई संभावना नहीं है और समानांतर निर्देश पाइपलाइनों से कोई लाभ नहीं है।
1 यानी 4 का स्पीड-अप कारक का अर्थ है कि एल्गोरिथ्म चार गुना तेज गति से चलता है जैसे कि इसे केवल एक धागे से निष्पादित किया गया हो। परिभाषा के अनुसार, तब, प्रत्येक थ्रेड को एक थ्रेड पर निष्पादित करने के लिए 1 के सापेक्ष गति-अप कारक होता है।
समस्या यह है, यह कार्य पर निर्भर करता है।
हाइपरथ्रेडिंग के पीछे धारणा मूल रूप से है कि सभी आधुनिक सीपीयू में एक से अधिक निष्पादन मुद्दे हैं। आमतौर पर एक दर्जन के करीब या अब। इंटेगर, फ्लोटिंग पॉइंट, एसएसई / एमएमएक्स / स्ट्रीमिंग (जो भी इसे आज कहा जाता है) के बीच विभाजित।
इसके अतिरिक्त, प्रत्येक इकाई की गति अलग है। यानी किसी चीज़ को प्रोसेस करने के लिए एक पूर्णांक गणित इकाई 3 चक्र हो सकता है, लेकिन 64 बिट फ़्लोटिंग पॉइंट डिवीजन 7 चक्र ले सकता है। (ये कुछ भी नहीं आधारित पौराणिक संख्याएं हैं)।
आउट ऑफ ऑर्डर निष्पादन विभिन्न इकाइयों को यथासंभव पूर्ण रखने में मदद करता है।
हालाँकि कोई भी एकल कार्य हर एक निष्पादन इकाई का उपयोग हर पल नहीं करेगा। बंटवारे के धागे भी पूरी तरह से मदद नहीं कर सकते हैं।
इस प्रकार सिद्धांत यह दिखावा करके बन जाता है कि एक दूसरा सीपीयू है, एक और धागा उस पर चल सकता है, उपलब्ध निष्पादन इकाइयों का उपयोग करके अपने ऑडियो ट्रांसकोडिंग का उपयोग न करें, जो कि 98% एसएसई / एमएमएक्स सामान है, और इंट और फ्लोट इकाइयां पूरी तरह से हैं। कुछ सामान को छोड़कर निष्क्रिय।
मेरे लिए, यह एक एकल सीपीयू दुनिया में अधिक समझ में आता है, वहाँ एक दूसरे सीपीयू को फेकने से धागे आसानी से उस थ्रेशोल्ड सीपीयू को संभालने के लिए थोड़ा (यदि कोई हो) अतिरिक्त कोडिंग पार करने की अनुमति देता है।
3/4/6/8 कोर वर्ल्ड में, 6/8/12/16 सीपीयू होने से, मदद मिलती है? पता नहीं। इतना ज्यादा? हाथ में कार्यों पर निर्भर करता है।
तो वास्तव में आपके सवालों का जवाब देने के लिए, यह आपकी प्रक्रिया में उन कार्यों पर निर्भर करेगा, जो निष्पादन इकाइयों का उपयोग कर रहे हैं, और आपके सीपीयू में, जो निष्पादन इकाइयाँ निष्क्रिय हैं / अप्रयुक्त हैं और उस दूसरे नकली सीपीयू के लिए उपलब्ध हैं।
कम्प्यूटेशनल सामान के कुछ 'वर्गों' को लाभ के लिए कहा जाता है (आमतौर पर उदारतापूर्वक)। लेकिन कोई कठिन और तेज़ नियम नहीं है, और कुछ वर्गों के लिए, यह चीजों को धीमा कर देता है।
मेरे पास जियोफेक के उत्तर में जोड़ने के लिए कुछ महत्वपूर्ण सबूत हैं कि मेरे पास वास्तव में एक कोर आई 7 सीपीयू (4-कोर) है जो हाइपरथ्रेडिंग के साथ है और वीडियो ट्रांसकोडिंग के साथ थोड़ा खेला है, जो एक ऐसा काम है जिसके लिए संचार और सिंक्रनाइज़ेशन की मात्रा की आवश्यकता होती है लेकिन पर्याप्त है समानता है कि आप प्रभावी रूप से एक प्रणाली को पूरी तरह से लोड कर सकते हैं।
कितने सीपीयू के साथ खेलने का मेरा अनुभव आम तौर पर 4 हाइपरथ्रेडेड "अतिरिक्त" कोर का उपयोग करके कार्य को सौंपा गया है जो प्रसंस्करण शक्ति के लगभग 1 अतिरिक्त सीपीयू के बराबर के बराबर है। अतिरिक्त 4 "हाइपरथ्रेडेड" कोर ने 3 से 4 "असली" कोर के रूप में उपयोग करने योग्य प्रसंस्करण शक्ति की समान मात्रा के बारे में जोड़ा।
यह कड़ाई से उचित परीक्षण नहीं है क्योंकि सभी एन्कोडिंग थ्रेड्स सीपीयू में समान संसाधनों के लिए प्रतिस्पर्धा कर रहे होंगे, लेकिन मेरे लिए यह समग्र प्रसंस्करण शक्ति में कम से कम मामूली वृद्धि को दर्शाता है।
यह दिखाने का एकमात्र वास्तविक तरीका है कि यह वास्तव में मदद करता है या नहीं, कुछ अलग इंटर्गर / फ़्लोटिंग पॉइंट / एसएसई प्रकार के परीक्षण एक ही समय में हाइपरथ्रेडिंग सक्षम और अक्षम के साथ एक सिस्टम पर चलेंगे और देखेंगे कि नियंत्रित नियंत्रण में कितनी प्रसंस्करण शक्ति उपलब्ध है वातावरण।
यह सीपीयू और काम के बोझ पर बहुत कुछ निर्भर करता है जैसा कि दूसरों ने कहा है।
हाइपर-थ्रेडिंग तकनीक के साथ Intel® Xeon® प्रोसेसर MP पर मापा गया प्रदर्शन इस तकनीक के लिए सामान्य सर्वर एप्लिकेशन बेंचमार्क पर 30% तक का प्रदर्शन लाभ दिखाता है।
(यह मुझे थोड़ा रूढ़िवादी लगता है।)
और यहाँ अधिक संख्या के साथ एक और लंबा पेपर है (जो मैंने अभी तक पढ़ा नहीं है) । उस पेपर से एक दिलचस्प बात यह है कि हाइपरथ्रेडिंग कुछ कार्यों के लिए थिन को धीमा कर सकता है।
एएमडी का बुलडोजर वास्तुकला दिलचस्प हो सकता है । वे प्रत्येक कोर को प्रभावी रूप से 1.5 कोर के रूप में वर्णित करते हैं। यह अति-हाइपरथ्रेडिंग या उप-मानक मल्टी-कोर की तरह है जो इस बात पर निर्भर करता है कि आप इसके संभावित प्रदर्शन के प्रति कितने आश्वस्त हैं। उस टुकड़े में संख्या 0.5x और 1.5x के बीच एक टिप्पणी गति-अप का सुझाव देती है।
अंत में, प्रदर्शन भी ऑपरेटिंग सिस्टम पर निर्भर है। उम्मीद है कि OS, CPU को हाइपरथ्रेड्स के लिए वास्तविक सीपीयू के लिए प्रक्रिया भेजेगा जो केवल सीपीयू के रूप में हैं। अन्यथा एक दोहरे कोर सिस्टम में, आपके पास एक निष्क्रिय सीपीयू और दो धागे थ्रेडिंग के साथ एक बहुत व्यस्त कोर हो सकता है। मुझे याद है कि यह विंडोज 2000 के साथ हुआ था, हालांकि, निश्चित रूप से, सभी आधुनिक ओएस उपयुक्त रूप से सक्षम हैं।