2011-08-27 10 views
7

Ho alcuni kernel OpenCL che non stanno facendo quello che dovrebbero essere, e mi piacerebbe eseguirne il debug in Xcode. È possibile?Come posso eseguire il debug di un kernel OpenCL in Xcode 4.1?

In caso contrario, è possibile utilizzare lo printf() nei kernel basati sulla CPU? Quando utilizzo il codice printf() nei miei kernel, il compilatore OpenCL mi dà sempre un sacco di errori.

risposta

3

Viene visualizzato il cast della stringa di formato per const char * per risolvere questo problema.

Questo funziona per me su Lion:

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

Questo ha l'errore descritto in precedenza:

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

Hai già provato la gDEBugger? Penso che sia l'unica scelta che hai al momento, per il debug di OpenCL su Mac.

Intel offre un printf nel suo nuovo SDK OpenCL 1.1, ma è solo per Linux e Windows. Lion ha OpenCL 1.1, ma almeno il mio Core 2 Duo non supporta l'estensione printf.

AMD sta ancora sviluppando i propri strumenti OpenCL e gli strumenti di debug di Nvidia sono solo per CUDA, per quanto ho capito.

+0

ho scaricato gDEBugger ma ha detto che il mio sistema operativo (OS X Lion 10.7.1) è non supportato –

+0

Oh. Quindi, a meno che non trascuri qualcosa, sembra che dovrai installare un altro sistema operativo o eseguire il debug con i valori di ritorno. –

0

Hai provato ad aggiungere questo pragma per abilitare printf?

#pragma OPENCL EXTENSION cl_amd_printf : enable 
+0

ho provato #pragma OPENCL EXTENSION cl_intel_printf: abilita e la versione e che hai postato e mi dà ancora lo stesso errore. –

+0

Che errore ottieni? – Nigel

+0

Errore OpenCL Build: registro compilazione compilatore: : 20: 12: errore: cast implicito illegale tra due puntatori con diversi spazi indirizzo printf ("Hello World"); ^ ~~~~~~~~~~~~ : 20: 12: avviso: passaggio 'char __attribute __ ((address_space (2))) [12]' elimina qualificatori, previsto 'char const * ' printf ("Hello World"); ^ ~~~~~~~~~~~~ –

1

Si potrebbe anche voler provare a utilizzare Quartz Composer per testare i kernel. Se hai accesso allo WWDC 2010 videos, credo che mostrino come utilizzare Quartz Composer per la prototipazione rapida dei kernel OpenCL in Sessions 416: "Sfrutta OpenCL nella tua applicazione" o 418: "Massimizza OpenCL Performance". Ci sono state anche alcune buone sessioni su questo durante WWDC 2009 e 2008 che potrebbero anche essere disponibili tramite ADC su iTunes.

Utilizzando Quartz Composer, è possibile impostare rapidamente ingressi e uscite per un kernel, quindi monitorare i risultati in tempo reale. È possibile evitare il ciclo di modifica della compilazione poiché tutto viene compilato durante la digitazione. Gli errori di sintassi e simili si apriranno quando cambi codice, il che rende abbastanza facile identificarli.

Ho usato questo strumento per sviluppare e testare gli shader OpenGL, che hanno molte cose in comune con i kernel OpenCL.

Problemi correlati