2012-09-06 13 views
8

मेरे सीयूडीए विकास के लिए, मैं 16 कोर के साथ एक मशीन और 16 जीएम के साथ 1 जीटीएक्स 580 जीपीयू का उपयोग कर रहा हूं। जो काम मैं कर रहा हूं, उसके लिए मैं 16 होस्ट थ्रेड्स (प्रत्येक कोर पर 1) लॉन्च करने की योजना बना रहा हूं, और 1 कर्नेल लॉन्च प्रति थ्रेड, प्रत्येक में 1 ब्लॉक और 1024 थ्रेड हैं। मेरा लक्ष्य 16 एसएम पर समानांतर में 16 कर्नेल चलाने के लिए है। क्या यह संभव/व्यवहार्य है?व्यक्तिगत CUDA कर्नेल लॉन्च करने वाले एकाधिक होस्ट थ्रेड

मैंने स्वतंत्र संदर्भों के बारे में जितना संभव हो सके पढ़ने की कोशिश की है, लेकिन बहुत अधिक जानकारी उपलब्ध नहीं है। जैसा कि मैं इसे समझता हूं, प्रत्येक मेजबान धागे का अपना जीपीयू संदर्भ हो सकता है। लेकिन, मुझे यकीन नहीं है कि अगर मैं स्वतंत्र संदर्भों का उपयोग करता हूं तो कर्नेल समानांतर में चलेंगे या नहीं।

मैं सभी 16 होस्ट धागे से सभी डेटा को एक विशाल संरचना में पढ़ सकता हूं और इसे एक कर्नेल लॉन्च करने के लिए GPU को पास कर सकता हूं। हालांकि, यह बहुत अधिक प्रतिलिपि होगी और यह एप्लिकेशन को धीमा कर देगा।

+0

एकाधिक संदर्भ एक साथ जीपीयू का उपयोग नहीं कर सकते हैं, इसलिए नहीं, यह काम नहीं करेगा। – talonmies

+0

धन्यवाद। क्या आप उपरोक्त को उत्तर के रूप में रख सकते हैं ताकि मैं इसे स्वीकार कर सकूं? – gmemon

+0

@gmemon, CUDA 5.5 में कई संदर्भ बनाने और निष्पादित करने के लिए नीचे मेरी टिप्पणी देखें। क्या आपने 16SM में 16 कर्नेल सफलतापूर्वक निष्पादित किए थे? अंत में आपका समाधान क्या था। – Tariq

उत्तर

4

जबकि एक बहु-थ्रेडेड एप्लिकेशन एक ही GPU पर एक साथ कई CUDA संदर्भ रख सकता है, तो वे संदर्भ एक साथ संचालन नहीं कर सकते हैं। सक्रिय होने पर, प्रत्येक संदर्भ में GPU का एकमात्र उपयोग होता है, और इसे किसी अन्य संदर्भ से पहले उपज करना चाहिए (जिसमें एक प्रतिपादन API या डिस्प्ले मैनेजर के साथ संचालन शामिल हो सकता है) GPU तक पहुंच प्राप्त कर सकता है।

तो एक शब्द में, कोई भी रणनीति किसी मौजूदा CUDA संस्करण या हार्डवेयर के साथ काम नहीं कर सकती है।

+0

मैं CUDA 5.5 का उपयोग कर रहा हूं। क्या यह एक एकल जीपीयू पर एकाधिक सीयूडीए संदर्भों के समवर्ती निष्पादन का समर्थन करता है? – Tariq

+0

मैं होस्ट पर दो अलग-अलग धागे बना रहा हूं और ड्राइवर एपीआई का उपयोग कर CUDA संदर्भ बना रहा हूं। ये संदर्भ एक ही समय में CUDA 5.5 में निष्पादित कर रहे हैं। – Tariq

6

आप एक समय में केवल एक GPU पर एक संदर्भ प्राप्त कर सकते हैं। आपको समानांतरता के प्रकार को प्राप्त करने का एक तरीका सीयूडीए धाराओं का उपयोग करना होगा। आप संदर्भ के अंदर 16 धाराएं बना सकते हैं, और नाम से स्ट्रीम में memcopies और कर्नल लॉन्च कर सकते हैं। आप धाराओं का उपयोग करने पर त्वरित वेबिनार में और अधिक पढ़ सकते हैं: http://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf। पूर्ण एपीआई संदर्भ CUDA टूलकिट मैनुअल में है। CUDA 4.2 मैनुअल http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Toolkit_Reference_Manual.pdf पर उपलब्ध है।

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