काम समूहों की संख्या की स्थापना कुछ हार्डवेयर पर ध्वनि सलाह हो सकता है CL_DEVICE_MAX_COMPUTE_UNITS
के बराबर होना है, यह निश्चित रूप से नहीं NVIDIA GPUs पर है।
सीयूडीए आर्किटेक्चर पर, ओपनसीएल गणना इकाई एक मल्टीप्रोसेसर के समतुल्य है (जिसमें 8, 32 या 48 कोर हो सकते हैं), और इन्हें 8 कार्य समूहों तक चलने में सक्षम होने के लिए डिज़ाइन किया गया है (ब्लॉक CUDA) प्रत्येक। बड़े इनपुट डेटा आकारों पर, आप हजारों कार्य समूहों को चलाने का विकल्प चुन सकते हैं, और आपका विशेष GPU प्रति कर्नेल लॉन्च 65535 x 65535 कार्य समूहों तक संभाल सकता है।
ओपनसीएल में एक अन्य डिवाइस विशेषता CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE
है। यदि आप एनवीआईडीआईए डिवाइस पर पूछते हैं, तो यह 32 लौटाएगा (यह "वार" या हार्डवेयर की प्राकृतिक सिम चौड़ाई है)। वह मान कार्य समूह आकार एकाधिक है जिसका उपयोग आप करना चाहिए; प्रत्येक कार्य आइटम द्वारा खपत संसाधनों के आधार पर कार्य समूह आकार प्रत्येक 512 आइटम तक हो सकते हैं। आपके विशेष जीपीयू के लिए अंगूठे का मानक नियम यह है कि आपको प्रतिरूप इकाई (सीयूडीए शर्तों में प्रति मल्टीप्रोसेसर के थ्रेड) की कम से कम 1 9 2 सक्रिय कार्य वस्तुओं की आवश्यकता होती है ताकि आर्किटेक्चर की सभी विलम्ब को कवर किया जा सके और संभावित रूप से पूर्ण मेमोरी बैंडविड्थ या पूर्ण अंकगणितीय थ्रूपुट प्राप्त हो सके। आपके कोड की प्रकृति पर।
एनवीआईडीआईए CUDA टूलकिट में "सीयूडीए आर्किटेक्चर के लिए ओपनसीएल प्रोग्रामिंग गाइड" नामक एक अच्छा दस्तावेज़ भेजता है। आपको इसे पढ़ने के लिए कुछ समय लेना चाहिए, क्योंकि इसमें एनवीआईडीआईए ओपनसीएल कार्यान्वयन उनके हार्डवेयर की विशेषताओं पर नक्शे के बारे में सभी विशिष्टताओं को शामिल करता है, और यह आपके द्वारा उठाए गए प्रश्नों का उत्तर देगा।
मैं इसे पढ़ूंगा, धन्यवाद। – rdoubleui