आप एक सही सवाल बता रहे हैं, साथ ही साथ इसका एक सरल जवाब देना मुश्किल है। इसमें कई पहलू शामिल हैं।
- नए धागे शुरू करने के ऊपरी हिस्से (या उन्हें कुछ कैश से चुनना);
- मेमोरी बस पर तनाव।
- उपरोक्त पहलुओं के अलग-अलग प्लेटफ़ॉर्म के लिए अलग-अलग लागतें अलग-अलग हैं।
बड़े पीसी में कई मेमोरी बसें हैं। छोटे लोगों में केवल एक है। एक मेमोरी बस प्रणाली पर यह कोई समझ नहीं आता है। यदि आपके सिस्टम में कई मेमोरी बसें हैं (चैनल) आपके डेटा की सरणी मेमोरी बैंकों के बीच मनमाने ढंग से विभाजित हो सकती है। यदि ऐसा होगा कि पूरी सरणी उसी स्मृति बैंक में बैठेगी, तो parralelisation बेकार होगा। अपने सरणी के लेआउट को फिर से समझना एक ओवरहेड है। कोर के बीच ऑपरेशन को विभाजित करने से पहले दूसरे शब्दों में यह पता लगाना आवश्यक है कि यह करने योग्य है या नहीं।
सरल उत्तर यह है कि ओवरहेड की भविष्यवाणी करना मुश्किल होगा, अधिकतर संभावना लाभ का उपभोग करेगी और समग्र परिणाम खराब हो जाएगा।
कुछ आर्किटेक्चर पर वास्तव में एक विशाल स्मृति क्षेत्र के लिए यह समझ में आता है।
स्रोत
2012-10-12 05:55:28
ऐसा ऑपरेशन शायद ही धीमा हो जाएगा यदि आप इसे समानांतर करते हैं - आपके पास मेमोरी बस तक पहुंच के लिए कई कोर/सीपीयू लड़ना होगा। –
शायद अधिक बाइट्स को स्थानांतरित करने के लिए विशिष्ट निर्देश का उपयोग करें, एक बार आपकी मदद करेगा। पैरालाइज़ेशन का उपयोग केवल तभी लाभ होगा जब डेटा विभिन्न मेमोरी भाग में वितरित किया जाता है। – wbao
एकमात्र मामला जिसमें समांतर 'मेमसेट' तेज हो सकता है, वह NUMA आर्किटेक्चर पर बहुत बड़ी मेमोरी ब्लॉक के साथ है जहां प्रत्येक कोर अपने प्रोसेसर से जुड़ी मेमोरी पर काम कर रहा है। –