2012-10-02 11 views
7

मैं 100% कैसे सुनिश्चित कर सकता हूं कि मेरा ओपनक्ल कर्नेल वास्तव में GPU पर चल रहा है, न कि CPU पर। मैं इसे समझने में सक्षम नहीं हूं क्योंकि ओपनसीएल कर्नेल सीपीयू पर भी चला सकता है। यहां कोई संकेतक?मुझे कैसे पता चलेगा कि मेरा ओपनसीएल कर्नेल GPU पर चल रहा है?

उत्तर

5

जब आप OpenCL संदर्भ बनाते हैं तो आपको अपने कंप्यूटर पर उपलब्ध प्लेटफॉर्म और डिवाइस के बीच चयन करना होगा। आप प्लेटफार्मों और उपकरणों के बारे में कुछ जानकारी प्राप्त कर सकते हैं clGetPlatformInfo और clGetDeviceInfo। आप मंचों और उपकरणों की सूची के लिए एनवीआईडीआईए और एएमडी एसडीके में नमूने कोड पा सकते हैं।

एएमडी (जीडीईबगर, कोड एक्सएल), एनवीआईडीआईए (विजुअल प्रोफाइलर) और इंटेल (इंटेल जीपीए) डिवाइस के लिए, आप प्रोफाइलिंग टूल का उपयोग कर सकते हैं।

0

आप जीपीयू पर कुछ वर्कलोड लोड करने के लिए बस टेकपावरअप जीपीयू-जेड का उपयोग कर सकते हैं। एक अन्य समाधान: आप स्पष्ट रूप से निर्दिष्ट कर सकते हैं कि क्या आप डिवाइस प्रकार CL_Device_Type_GPU में GPU का उपयोग कर रहे हैं।

0

मैं अपने मैकबुक प्रो & मैक प्रो पर मेनूमीटर का उपयोग करता हूं - यदि सीपीयू का उपयोग किया जा रहा है तो यह स्पष्ट है। (मैं अगर रूपरेखा उपकरण मेरे लिए काम जब XCode के तहत OpenCL का उपयोग करेगा पता नहीं है ....)

4

जब आपके संदर्भ बनाने, clCreateContextFromType का उपयोग जहां झंडा CL_DEVICE_TYPE_GPU, निर्दिष्ट करता है जो कि आप चाहते हैं पारित कर सकते हैं केवल जीपीयू। कुछ इस की गारंटी देता है की तरह एक GPU का उपयोग (आप 100% यकीन है कि हो सकता है):

cl_uint num_platforms = 0; 
clGetPlatformIDs(0, NULL, &num_platforms); 
cl_platform_id* platform = malloc(sizeof(cl_platform_id) * num_platforms); 
cl_context_properties cprops[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform[0], 0 }; 
ctx = clCreateContextFromType(cprops, CL_DEVICE_TYPE_GPU, NULL, NULL, &err); 

आप पहले से ही अपने संदर्भ और उपकरणों स्थापित किया है, तो आप ऐसा तरह एक उपकरण के प्रकार क्वेरी कर सकते हैं:

cl_device_type dev_type; 
clGetDeviceInfo(my_device, CL_DEVICE_TYPE, sizeof(dev_type), &dev_type, NULL); 
if (dev_type == CL_DEVICE_TYPE_GPU) { 
    printf("I'm 100%% sure this device is a GPU"); 
} 

इस डिवाइस पर बनाए गए कमांड कतार के लिए जो कुछ भी आप करेंगे, वह GPU पर चल जाएगा।

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