/ / Come posso eseguire il debug di un kernel OpenCL in Xcode 4.1? - xcode, macos, debugging, opencl

Come posso eseguire il debug di un kernel OpenCL in Xcode 4.1? - xcode, macos, debugging, opencl

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

In caso contrario, c'è un modo che posso usare printf() nei miei kernel basati sulla CPU? Quando lo uso printf() nei miei kernel il compilatore OpenCL mi dà sempre un sacco di errori.

risposte:

3 per risposta № 1

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

Questo funziona per me su Lion:

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

Questo ha l'errore sopra descritto:

printf("%d %dn", dl, dll);

1 per risposta № 2

Potresti anche provare a utilizzare Quartz Composer per testare i tuoi kernel. Se hai accesso a Video del WWDC 2010, Credo che mostrino come usare Quartz Composerper la prototipazione rapida dei kernel OpenCL in Sessions 416: "Sfrutta OpenCL nella tua applicazione" o 418: "Ottimizza le prestazioni di OpenCL". Ci sono state anche alcune buone sessioni su questo durante WWDC 2009 e 2008 che potrebbero anche essere disponibili tramite ADC su iTunes.

Usando Quartz Composer, puoi rapidamente configurareinput e output 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.


0 per risposta № 3

Hai dato il gDEBugger una prova già? 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 suoi strumenti OpenCL e gli strumenti di debug di Nvidia sono solo per CUDA, per quanto ne so.


0 per risposta № 4

Hai provato ad aggiungere questo pragma per abilitare printf?

#pragma OPENCL EXTENSION cl_amd_printf : enable