2011-08-30 10 views
13

मुझे केवल एक टिप्पणी मिली कि स्थानीय मेमोरी रजिस्टर मेमोरी, दो-प्रति-थ्रेड प्रकारों की तुलना में धीमी है।क्या स्थानीय मेमोरी CUDA में साझा स्मृति से धीमी है?

साझा स्मृति तेजी से माना जाना चाहिए, लेकिन यह स्थानीय स्मृति [थ्रेड के] से तेज है?

मैं जो करना चाहता हूं वह एक औसत फ़िल्टर है, लेकिन औसत के बजाय दिए गए प्रतिशत के साथ। इस प्रकार मुझे सूची के टुकड़े लेने, उन्हें क्रमबद्ध करने और फिर एक उपयुक्त चुनने की आवश्यकता है। लेकिन मैं साझा स्मृति सूची को हल करना शुरू नहीं कर सकता या चीजें गलत हो सकती हैं। क्या मैं बस स्थानीय मेमोरी की प्रतिलिपि बनाकर बहुत सारे प्रदर्शन खो दूंगा?

+0

यह वास्तव में प्रोग्रामिंग से संबंधित नहीं है, है ना? मुझे गणित टैग के लिए एक मजबूत लिंक नहीं दिख रहा है। –

+7

@Sjoerd C. de Vries: CUDA के संदर्भ में, यह एक प्रोग्रामिंग से संबंधित प्रश्न है - आर्किटेक्चर में एक समान वर्दी मेमोरी स्पेस है और प्रोग्रामर को स्पष्ट रूप से चुनना चाहिए कि किसी भी कोड में कौन से मेमोरी प्रकार और एक्सेसिंग विधियों का उपयोग किया जाना चाहिए लिखते हैं। यह CUDA प्रोग्रामिंग का एक मूल सिद्धांत है। – talonmies

+0

@talonmies मैं समझता हूं कि, लेकिन फिर भी यह सवाल प्रोग्रामेटिक रूप से मेमोरी, मतभेद wrt एपीआई, प्रोग्रामिंग रजिस्ट्रार बनाम प्रोग्रामिंग साझा स्मृति आदि के बारे में नहीं है। यह मूल रूप से किस स्मृति प्रकार के बारे में है। यह एक हार्डवेयर सवाल है। मुझे लगता है कि ओपी को प्रश्न को दोबारा शुरू करना चाहिए, उदाहरण के लिए सीयूडीए में साझा स्मृति का उपयोग कर डेटा के एक निश्चित प्रतिशत को खोजने की अपनी समस्या की दिशा में। –

उत्तर

23

स्थानीय मेमोरी केवल स्थानीय वैश्विक स्मृति है। यह रजिस्ट्रार या साझा स्मृति की तुलना में बहुत धीमा (बैंडविड्थ और विलंबता दोनों के मामले में) है। यह मेमोरी कंट्रोलर बैंडविड्थ भी खपत करता है जो अन्यथा वैश्विक मेमोरी लेनदेन के लिए उपलब्ध होगा। आप जिस हार्डवेयर का उपयोग कर रहे हैं और स्थानीय मेमोरी का उपयोग कैसे किया जाता है, उसके आधार पर स्थानीय स्मृति का उपयोग करके जानबूझकर या स्थानीय रूप से मेमोरी का उपयोग करने का प्रदर्शन प्रभाव मामूली से गंभीर हो सकता है।

वसीली Volkov के शोध के अनुसार - देख Better performance at lower occupancy (pdf) - वहाँ साझा स्मृति के बीच प्रभावी बैंडविड्थ में 8 अंतर का एक पहलू के बारे में है और फर्मी GPUs (लगभग 1000 जीबी/साझा स्मृति और 8000 जीबी/एस के लिए रों पर रजिस्टर रजिस्टरों के लिए)। यह कुछ हद तक CUDA दस्तावेज का विरोध करता है, जिसका अर्थ है कि साझा स्मृति रजिस्टरों की गति में तुलनीय है।

+0

हां, धन्यवाद, इस जानकारी का समर्थन करने वाले मेरे प्रयोगात्मक निष्कर्षों के साथ विस्तार से विस्तार करने के लिए, मेरी समस्या के साथ स्थानीय स्मृति में काम करना वास्तव में तीव्रता के आदेश का आदेश था। चूंकि मेरा प्रोग्राम पहले से ही मेरे हार्डवेयर की सीमाओं पर काम करता है, प्रति ब्लॉक मेमोरी आकार साझा किया गया था, मैं पुनर्मूल्यांकन के लिए साझा स्मृति का उपयोग नहीं कर सका, इसलिए मुझे अपने प्रतिशत की तलाश करने के लिए कुछ स्मार्ट रजिस्टर मेमोरी एल्गोरिदम का उपयोग नहीं करना पड़ा, यह बहुत तेज हो गया वैसे भी। – JohnKay

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