2011-02-13 9 views
18

साझा स्मृति का आकार (ओपनसीएल शर्तों में "स्थानीय स्मृति") आज के अधिकांश एनवीआईडीआईए जीपीयू पर केवल 16 कीबी है।
मेरे पास एक ऐसा एप्लिकेशन है जिसमें मुझे एक सरणी बनाने की आवश्यकता है जिसमें 10,000 पूर्णांक हैं। तो स्मृति की मात्रा मुझे 10,000 पूर्णांक = 10,000 * 4 बी = 40 केबी फिट करने की आवश्यकता होगी।जीपीयू साझा स्मृति आकार बहुत छोटा है - मैं इसके बारे में क्या कर सकता हूं?

  • मैं इसके आसपास कैसे काम कर सकता हूं?
  • क्या कोई GPU है जिसमें साझा स्मृति की 16 से अधिक कीबी है?

उत्तर

26

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

आप इसे कैसे कार्यान्वित करेंगे यह आपके एल्गोरिदम पर निर्भर करेगा - यदि आप कुछ विवरण दे सकते हैं कि आप इसे लागू करने की कोशिश कर रहे हैं तो आपको कुछ और ठोस सुझाव मिल सकते हैं।

एक अंतिम बिंदु - बारे में पता साझा स्मृति एक ब्लॉक में सभी धागे के बीच साझा है कि हो सकता है - आप धागा प्रति जिस तरह से 16 से भी कम समय केबी है, जब तक आप एक भी डेटा संरचना जो एक ब्लॉक में सभी थ्रेड के लिए आम है है ।

+26

+1 अक्सर यह सिर्फ वैश्विक स्मृति का उपयोग करने के लिए और केवल साझा स्मृति के साथ प्रदर्शन अनुकूलन पर विचार अपने कोड काम करता है के बाद आसान है। –

9

सभी गणना क्षमता 2.0 और अधिक डिवाइस (पिछले वर्ष या दो में सबसे अधिक) में प्रति मल्टीप्रोसेसर के 48KB उपलब्ध साझा मेमोरी है। यह शुरू हुआ, पॉल का जवाब सही है कि आप संभवतः एक ही मल्टीप्रोसेसर में सभी 10 के पूर्णांक लोड नहीं करना चाहेंगे।

4

आप cudaFuncSetCacheConfig(nameOfKernel, cudaFuncCachePrefer{Shared, L1}) फ़ंक्शन का उपयोग करने का प्रयास कर सकते हैं।

यदि आप साझा करने के लिए एल 1 पसंद करते हैं, तो 48 केबी एल 1 और 16 केबी पर जाएगा साझा किया जाएगा। यदि आप एल 1 में साझा करना पसंद करते हैं, तो 48 केबी साझा किया जाएगा और 16 केबी एल 1 पर जाएगा।

उपयोग:

cudaFuncSetCacheConfig(matrix_multiplication, cudaFuncCachePreferShared); 
matrix_multiplication<<<bla, bla>>>(bla, bla, bla); 
+0

और आगे स्पष्टीकरण के लिए लिंक: http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDART__HIGHLEVEL_ge0969184de8a5c2d809aa8d7d2425484.html – BugShotGG

+0

@ बुगशॉटजीजी: लिंक मर चुका है, बेहतर जगह कहीं और स्थिर ... – einpoklum

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