2012-07-09 11 views
6

ओपनसीएल कर्नेल को बिटस्ट्रीम में कैसे संकलित करें जिसे मैं बाद में बिना किसी संकलन के सीधे लोड कर सकता हूं? मेरा प्लेटफार्म एएमयू और एएमडी दोनों अलग GPU के साथ एएमडी मशीन है। मशीन नवीनतम एएमडी एपीपी एसडीके चला रही है जो ओपनसीएल 1.2 का समर्थन करती है।ओपनसीएल कर्नेल को बिटस्ट्रीम में कैसे संकलित करें?

उत्तर

9

1) कर्नेल को clcreateProgamWithSource API कॉल के साथ स्रोत से प्रोग्राम में संकलित करें। कंपाइलर त्रुटियों को clGetProgramBuildInfo API कॉल के साथ पुनर्प्राप्त किया जाता है।

2) CL_PROGRAM_BINARY_SIZES प्राप्त करने के लिए clGetProgramInfo API कॉल का उपयोग करें। ये कार्यक्रम बाइनरी के आकार हैं। 2 ए) आकारों का उपयोग करके द्विआधारी के लिए स्मृति आवंटित करें 2)

3) CL_PROGRAM_BINARIES प्राप्त करने के लिए clGetProgramInfo API कॉल का उपयोग करें। यह कार्यक्रम बाइनरी हो जाता है।

4) एक बाइनरी को एपीआई कॉल clCreateProgamWithBinary के साथ ओपनसीएल प्रोग्राम ऑब्जेक्ट में बदल दिया जा सकता है।

बाइनरी एक डिवाइस विशिष्ट है इसलिए एक विशिष्ट डिवाइस पर संकलित एक बाइनरी एक अलग डिवाइस पर नहीं चलती है।

एक प्रक्रिया प्रक्रिया के लिए, एक बार जब आपके पास पर्यावरण (प्लेटफ़ॉर्म, डिवाइस, संदर्भ और कतार) हो, तो आप ओपनसीएल कर्नेल ऑब्जेक्ट को फिर से उपयोग कर सकते हैं और उसे किसी अन्य clEnqueueNDRange API कॉल के साथ फिर से निष्पादित कर सकते हैं।

+0

उत्कृष्ट और विस्तृत उत्तर! आपको बहुत - बहुत धन्यवाद! – gpunerd

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