2011-08-27 23 views
7

मेरे पास कुछ ओपनसीएल कर्नेल हैं जो वे नहीं कर रहे हैं, और मुझे एक्सकोड में उन्हें डीबग करना अच्छा लगेगा। क्या यह संभव है?मैं एक्सकोड 4.1 में ओपनसीएल कर्नेल को कैसे डिबग कर सकता हूं?

यदि नहीं, तो क्या मैं अपने CPU-आधारित कर्नेल में printf() का उपयोग कर सकता हूं? जब मैं अपने कर्नेल में printf() का उपयोग करता हूं तो ओपनसीएल कंपाइलर हमेशा मुझे त्रुटियों का पूरा समूह देता है।

उत्तर

3

प्रारूप स्ट्रिंग को कास्ट चार में कास्टिंग करना * इस समस्या को ठीक करने के लिए प्रतीत होता है।

इस शेर पर मेरे लिए काम करता है:

printf((char const *)"%d %d\n", dl, dll); 

यह ऊपर वर्णित त्रुटि है:

printf("%d %d\n", dl, dll); 
0

क्या आपने gDEBugger पहले से ही कोशिश की है? मुझे लगता है कि मैक पर ओपनसीएल डिबगिंग के लिए वर्तमान में यह एकमात्र विकल्प है।

इंटेल अपने नए ओपनसीएल 1.1 एसडीके में एक प्रिंटफ प्रदान करता है, लेकिन यह केवल लिनक्स और विंडोज के लिए है। शेर में ओपनसीएल 1.1 है, लेकिन कम से कम मेरा कोर 2 डुओ प्रिंटफ एक्सटेंशन का समर्थन नहीं करता है।

एएमडी अभी भी अपने ओपनसीएल उपकरण विकसित कर रहा है, और एनवीडिया डीबगिंग टूल केवल सीयूडीए के लिए हैं, जहां तक ​​मैं समझता हूं।

+0

मैं gDEBugger डाउनलोड किया लेकिन यह कहा मेरी ऑपरेटिंग सिस्टम (ओएस एक्स शेर 10.7.1) है कि समर्थित नहीं –

+0

ओह। इसलिए, जब तक कि मैंने कुछ अनदेखा नहीं किया, ऐसा लगता है कि आपको वापसी मूल्यों द्वारा एक और ओएस या डीबग स्थापित करना होगा। –

0

क्या आपने printf को सक्षम करने के लिए इस प्रज्ञा को जोड़ने का प्रयास किया है?

#pragma OPENCL EXTENSION cl_amd_printf : enable 
+0

मैंने #pragma OPENCL EXTENSION cl_intel_printf की कोशिश की: सक्षम और आपके द्वारा पोस्ट किया गया संस्करण और यह अभी भी मुझे एक ही त्रुटि देता है। –

+0

आपको क्या त्रुटि मिलती है? – Nigel

+0

ओपनसीएल बिल्ड त्रुटि: कंपाइलर बिल्ड लॉग: <प्रोग्राम स्रोत>: 20: 12: त्रुटि: विभिन्न पता रिक्त स्थान के साथ दो पॉइंटर्स के बीच अवैध निहित कास्ट printf ("हैलो वर्ल्ड"); ^ ~~~~~~~~~~~~ <प्रोग्राम स्रोत>: 20: 12: चेतावनी: 'char __attribute __ ((पता_स्पेस (2)) पास करना() [12]' क्वालिफायर को छोड़कर, अपेक्षित 'char const * ' printf ("हैलो वर्ल्ड"); ^ ~~~~~~~~~~~~ –

1

आप अपने कर्नेल का परीक्षण करने के लिए क्वार्ट्ज संगीतकार का उपयोग करने का भी प्रयास करना चाहेंगे। यदि आपके पास WWDC 2010 videos तक पहुंच है, तो मेरा मानना ​​है कि वे सत्र 416 में ओपनसीएल कर्नेल के तेज़ प्रोटोटाइप के लिए क्वार्ट्ज संगीतकार का उपयोग कैसे करें: "आपके एप्लिकेशन में ओपनसीएल का उपयोग करना" या 418: "ओपनसीएल प्रदर्शन को अधिकतम करना"। डब्ल्यूडब्ल्यूडीसी 200 9 और 2008 के दौरान इस पर कुछ अच्छे सत्र भी थे जो आईट्यून्स पर एडीसी के माध्यम से भी उपलब्ध हो सकते हैं।

क्वार्ट्ज संगीतकार का उपयोग करके, आप जल्दी से कर्नेल के लिए इनपुट और आउटपुट सेट अप कर सकते हैं, फिर रीयलटाइम में परिणामों की निगरानी कर सकते हैं। आप परिवर्तन-संकलन-परीक्षण चक्र से बच सकते हैं क्योंकि आपके द्वारा टाइप किए जाने पर सब कुछ संकलित किया जाता है। सिंटैक्स त्रुटियां और जैसे ही आप कोड बदलते हैं, वैसे ही पॉप अप होगा, जो उन्हें पहचानने में काफी आसान बनाता है।

मैंने ओपनजीएल शेडर्स को विकसित और परीक्षण करने के लिए इस टूल का उपयोग किया है, जिसमें ओपनसीएल कर्नेल के साथ कई चीजें आम हैं।

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