मैं सीयूडीए और ओपनसीएल के लिए प्रोग्रामिंग गाइड पढ़ रहा हूं, और मैं यह नहीं समझ सकता कि बैंक संघर्ष क्या है। वे इस विषय पर विस्तार किए बिना समस्या को हल करने के तरीके में गोता लगाने की तरह हैं। क्या कोई मुझे समझने में मदद कर सकता है? अगर सीयूडीए/ओपनसीएल के संदर्भ में या कंप्यूटर विज्ञान में सामान्य रूप से बैंक संघर्षों के संदर्भ में सहायता की कोई प्राथमिकता नहीं है।बैंक संघर्ष क्या है? (कुडा/ओपनसीएल प्रोग्रामिंग करना)
उत्तर
nvidia (और उस मामले के लिए amd) के लिए gpus स्थानीय स्मृति मेमोरीबैंक में बांटा गया है। प्रत्येक बैंक एक समय में केवल एक डेटासेट को संबोधित कर सकता है, इसलिए यदि कोई अर्धवाही उसी बैंक से डेटा लोड/स्टोर करने का प्रयास करता है तो पहुंच को क्रमबद्ध करना होगा (यह एक बैंक संघर्ष है)। Gt200 gpus के लिए 16 बैंक (फर्मि के लिए 32 टैंक), एएमडी जीपीयस के लिए 16 या 32 बैंक (57xx या उच्चतम: 32, नीचे सब कुछ: 16)) हैं, जो 32 बिट की ग्रैन्युइटी के साथ जुड़े हुए हैं (इसलिए बाइट 0-3 में हैं बैंक 1, 4-7 2 बैंक में, ..., 64-69 बैंक 1 और इसी तरह)। एक बेहतर दृश्य के लिए यह मूल रूप से इस तरह दिखता है:
Bank | 1 | 2 | 3 |...
Address | 0 1 2 3 | 4 5 6 7 | 8 9 10 11 |...
Address | 64 65 66 67 | 68 69 70 71 | 72 73 74 75 |...
...
तो अगर एक halfwarp में प्रत्येक थ्रेड तक पहुँचता लगातार 32 बिट मूल्यों कोई बैंक संघर्ष कर रहे हैं। इस नियम से एक अपवाद (प्रत्येक धागे को अपने बैंक तक पहुंचना चाहिए) प्रसारण हैं: यदि सभी धागे एक ही पते तक पहुंचते हैं, तो मान केवल एक बार पढ़ा जाता है और सभी धागे पर प्रसारित किया जाता है (जीटी 200 के लिए इसे अर्धवार्प एक्सेसिंग में सभी धागे होना चाहिए एक ही पता, आईआईआरसी फर्मि और एएमडी जीपीस एक ही मूल्य तक पहुंचने वाले किसी भी धागे के लिए ऐसा कर सकते हैं)।
दृश्य और स्पष्टीकरण के लिए मीठे धन्यवाद। मुझे प्रसारण के बारे में पता नहीं था और यह एक महत्वपूर्ण जानकारी की तरह लगता है :) मैं यह सत्यापित करने के बारे में कैसे जाऊं कि मेरे भार और स्टोर साझा स्मृति में बैंक विवादों का कारण नहीं बनते हैं? क्या मुझे किसी भी तरह असेंबली कोड पर जाना है या अन्य तरीके हैं? – smuggledPancakes
बैंक संघर्ष के अवसर के बाद somethink है जो रनटाइम पर निर्धारित किया जाएगा (जिसका मतलब है कि कंपाइलर इसके बारे में नहीं जानता है, सभी ज्यादातर पते रनटाइम पर उत्पन्न होते हैं), संकलित संस्करण प्राप्त करने से ज्यादा मदद नहीं मिलती है। मैं आम तौर पर इसे पुराने पुराने तरीके से करता हूं, मेनिंग मैं पेन और पेपर लेता हूं और सोचता हूं कि मेरा कोड कहां स्टोर करता है। बाद में बैंक संघर्ष के अवसर को नियंत्रित करने वाले नियम जटिल नहीं हैं। अन्यथा आप एनवीडिया ओपनसीएल प्रोफाइलर का उपयोग कर सकते हैं (एसडीके, आईआईआरसी के साथ बंडल किया जाना चाहिए)। मुझे लगता है कि यह warp serializes के लिए एक काउंटर है। – Grizzly
वार serializes इंगित करने के लिए धन्यवाद। कम्प्यूट प्रोफाइलर के साथ आने वाली रीडेमे टेक्स्ट फाइलों में से एक ने कहा, – smuggledPancakes
साझा स्मृति जिसे समानांतर में उपयोग किया जा सकता है उसे मॉड्यूल (जिसे बैंक भी कहा जाता है) में विभाजित किया जाता है। यदि एक ही बैंक में दो मेमोरी स्थान (पते) होते हैं, तो आपको बैंक संघर्ष मिलता है जिसके दौरान समानांतर पहुंच के फायदे खोने पर पहुंच को क्रमशः किया जाता है।
तो क्या यह संबंधित है जब आधा-वार स्मृति को स्टोर या लोड करना चाहता है? 16 धागे मेमोरी लेनदेन करने की कोशिश कर रहे हैं और इस प्रकार एक से अधिक थ्रेड वाले एक ही बैंक तक पहुंचने से सीरियलाइज्ड प्रसंस्करण होता है? इसके अलावा, कोई यह सुनिश्चित करता है कि आप उसी बैंक में डेटा संग्रहित/लोड नहीं कर रहे हैं? – smuggledPancakes
सरल शब्दों में, बैंक संघर्ष एक ऐसा मामला है जब मेमोरी सिस्टम में उपलब्ध बैंकों में आईओ वितरित करने में कोई मेमोरी एक्सेस पैटर्न विफल रहता है। निम्नलिखित उदाहरण अवधारणा को विस्तृत करते हैं: -
मान लीजिए कि हमारे पास दो आयामी 512x512 सरणी पूर्णांक हैं और हमारे डीआरएएम या मेमोरी सिस्टम में 512 बैंक हैं। डिफ़ॉल्ट रूप से सरणी डेटा इस तरह से लेआउट होगा कि एआर [0] [0] बैंक 0 पर जाता है, एआर [0] [1] बैंक 1, एआर [0] [2] बैंक 2 में जाता है .... एआर [0] [511] बैंक 511 में जाता है। सरणी को सामान्य करने के लिए [x] [y] बैंक नंबर वाई पर कब्जा करता है। अब कुछ कोड (जैसा कि नीचे दिखाया गया है) कॉलम प्रमुख फैशन यानी डेटा में डेटा एक्सेस करना प्रारंभ करें। वाई स्थिर रखते हुए एक्स बदलना, फिर अंतिम परिणाम यह होगा कि सभी मेमोरी एक्सेस उसी बैंक पर आ जाएंगे - इसलिए बैंक संघर्ष।
int arr[512][512];
for (j = 0; j < 512; j++) // outer loop
for (i = 0; i < 512; i++) // inner loop
arr[i][j] = 2 * arr[i][j]; // column major processing
इस तरह की समस्याएं हैं, आमतौर पर, सरणी बफरिंग या सरणी में तत्वों की अभाज्य संख्या का उपयोग करके compilers से बचा रहे हैं।
http://en.wikipedia.org/wiki/Memory_bank
और http://mprc.pku.cn/mentors/training/ISCAreading/1989/p380-weiss/p380-weiss.pdf
, आप स्मृति बैंक के बारे में विस्तार पा सकते हैं। लेकिन यह @Grizzly द्वारा क्या कहा जाता है उससे थोड़ा अलग है। इस पेज में , बैंक इस
बैंक की तरह है 1 2 3
पता | 0, 3, 6 ... | | 1, 4, 7 ... | | 2, 5,8 ... |
आशा है कि यह मदद मिलेगी
(CUDA बैंक संघर्ष) मुझे आशा है कि यह मदद मिलेगी .. यह बहुत अच्छा explaination है ...
ध्यान दें कि [केवल-लिंक उत्तर] (http://meta.stackoverflow.com/tags/link-only-answers/info) निराश हैं, SO उत्तर समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम। फिर भी संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra
ओपी की बेहतर सहायता के लिए कृपया लिंक पर विस्तार से विस्तृत करें। –
यह वीडियो वास्तव में उपयोगी है! और मुझे नहीं पता कि नीचे वोट क्यों! यह एक बहुत अच्छा इनपुट है! +1 – Gabriel
- 1. [SomePaymentProcesingCompany] से बैंक खाते
- 2. पेड़ संघर्ष को हल करना
- 3. मैं बैंक ट्रांसफर (बीएसीएस)
- 4. क्या एपीआई के साथ कोई बैंक हैं?
- 5. कुडा/ओपनसीएल के लिए वैश्विक मेमोरी में बैंक संघर्ष क्यों नहीं हैं?
- 6. केकपीएचपी: बैंक मॉडल
- 7. संघर्ष
- 8. क्या "प्रोग्रामिंग" नीचे एक प्रोग्रामिंग भाषा है?
- 9. प्रोग्रामिंग मुहावरे क्या है?
- 10. रैखिक प्रोग्रामिंग क्या है?
- 11. एआई प्रोग्रामिंग शुरू करना
- 12. मॉड्यूल संघर्ष क्यों है?
- 13. यहां संघर्ष कहां है?
- 14. एफपीजीए प्रोग्रामिंग शुरू करना
- 15. बैंक लेनदेन रिकॉर्ड कैसे खींचें?
- 16. स्मार्टकार्ड प्रोग्रामिंग शुरू करना
- 17. "कुल कार्यात्मक प्रोग्रामिंग" क्या है?
- 18. शॉटगन/वूडू प्रोग्रामिंग क्या है?
- 19. पहलू उन्मुख प्रोग्रामिंग क्या है?
- 20. डेटा-संचालित प्रोग्रामिंग क्या है?
- 21. विंडोज़: प्रोग्रामिंग भाषा क्या है?
- 22. औपचारिक प्रोग्रामिंग भाषा क्या है?
- 23. GITHUB संघर्ष
- 24. संगठनात्मक संघर्ष
- 25. संघर्ष सबवर्सन
- 26. संघर्ष समाधान?
- 27. JQuery संघर्ष?
- 28. संदर्भ संघर्ष
- 29. ऑन-द-फ्लाई बैंक खाता संख्या सत्यापन
- 30. क्या मुझे गिट-रीरेरे को अपने संघर्ष समाधान को रिकॉर्ड करने के लिए विलय करना है?
[CUDA "बैंक संघर्ष"] googling के बजाय का प्रयास करें। – belwood