2009-10-18 9 views
8

सीयूडीए एसडीके में विभिन्न सीयूडीए डेमो "बिखरे हुए लेखन" का संदर्भ लें। यह बिखरी हुई लेखन क्या है और यह इतना महान क्यों है? इसके विपरीत क्या खड़ा है?CUDA: बिखरे हुए लेखन क्या है?

उत्तर

5

मैं यहां सीयूडीए की शब्दावली का उपयोग करने जा रहा हूं।

scattered write का मतलब है कि आप प्रत्येक कूडा थ्रेड से मनमाना पते पर लिख रहे हैं (यानी आपके वार के थ्रेड लगातार स्मृति में नहीं लिखेंगे, उदाहरण के लिए)। यह फ्रेम-बफर लिखने के साथ विरोधाभास करता है, जो 2 डी-सुसंगत हैं, और हार्डवेयर द्वारा एकत्रित किया जा सकता है। जीपीयू के लिए इतने लंबे समय तक उपलब्ध एकमात्र लेखन थे।

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

5

बिखरे हुए लेखन बहुत अच्छे हैं क्योंकि यह आपको किसी भी स्मृति पते पर लिखने की अनुमति देता है। पिछला शेडर विकृति आमतौर पर मेमोरी पतों में सीमित होती है जो एक दिया गया शेडर प्रोग्राम लिख सकता है।

"जबकि ग्राफिक्स एपीआई में खंड कार्यक्रम पूर्व-निर्दिष्ट स्थान पर 32 फ्लोट (आरजीबीए * 8 रेंडर लक्ष्य) आउटपुट तक सीमित हैं, सीयूडीए बिखरे हुए लिखने का समर्थन करता है - यानी किसी भी पते पर स्टोर की असीमित संख्या। इससे कई नए एल्गोरिदम कि संभव नहीं थे ग्राफ़िक्स का उपयोग CUDA

CUDA पूछे जाने वाले प्रश्न से उपयोग करते हुए "कुशलता से प्रदर्शन करने के लिए API:

http://forums.nvidia.com/index.php?s=fd8a3833d78a50e273c5c731476eed0d&showtopic=84440&pid=478583&start=0&#entry478583

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

+0

जो अभी भी "डिवाइस मेमोरी" पर है, है ना? (आई/ओ स्कैटर/इकट्ठा ऑपरेशंस के विपरीत जो डीएमए इंजन को विभिन्न मुख्य स्मृति स्थान से सामग्री को चलाने के लिए अनुमति देता है जैसे कि एक एकल I/O पट्टी) – PypeBros

+0

सही। यह जीपीयू पर स्मृति को संदर्भित करता है, न कि वैश्विक स्मृति। –