2011-08-27 19 views
7

Tengo algunos kernels OpenCL que no están haciendo lo que deberían ser, y me encantaría depurarlos en Xcode. es posible?¿Cómo puedo depurar un kernel OpenCL en Xcode 4.1?

Si no, ¿hay alguna forma de que pueda usar printf() en mis kernels basados ​​en CPU? Cuando uso printf() en mis núcleos, el compilador OpenCL siempre me da un montón de errores.

Respuesta

3

Al lanzar la cadena de formato a const char * aparece solucionar este problema.

Esto funciona para mí en León:

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

Esto tiene el error descrito anteriormente:

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

¿Ya has probado la gDEBugger? Creo que es la única opción que tiene actualmente, para la depuración de OpenCL en la Mac.

Intel ofrece un printf en su nuevo SDK OpenCL 1.1, pero eso es solo para Linux y Windows. Lion tiene OpenCL 1.1, pero al menos mi Core 2 Duo no es compatible con la extensión printf.

AMD todavía está desarrollando sus herramientas OpenCL, y las herramientas de depuración de Nvidia son solo para CUDA, por lo que yo entiendo.

+0

he descargado gDEBugger pero dije que mi sistema operativo (OS X Lion 10.7.1) es no compatible –

+0

Oh. Entonces, a menos que haya pasado por alto algo, parece que tendrá que instalar otro sistema operativo o depurarlo por valores devueltos. –

0

¿Ha intentado agregar este pragma para habilitar printf?

#pragma OPENCL EXTENSION cl_amd_printf : enable 
+0

intenté #pragma OPENCL EXTENSION cl_intel_printf: enable y la y la versión que ha publicado y todavía me da el mismo error. –

+0

¿Qué error obtienes? – Nigel

+0

Error de generación de OpenCL: registro de compilación del compilador: : 20: 12: error: conversión implícita ilegal entre dos punteros con espacios de direcciones diferentes printf ("Hola mundo"); ^ ~~~~~~~~~~~~ : 20: 12: advertencia: pasar 'char __tributo __ ((address_space (2))) [12]' descarta calificadores, espera 'char const * ' printf ("Hola mundo"); ^ ~~~~~~~~~~~~ –

1

Es posible que también desee probar usar Quartz Composer para probar sus kernels. Si tiene acceso al WWDC 2010 videos, creo que muestran cómo usar Quartz Composer para el prototipado rápido de kernels OpenCL en Sesiones 416: "Aprovechar OpenCL en su aplicación" o 418: "Maximizar el rendimiento de OpenCL". También hubo algunas buenas sesiones sobre esto durante WWDC 2009 y 2008 que también podrían estar disponibles a través de ADC en iTunes.

Utilizando Quartz Composer, puede configurar rápidamente las entradas y salidas para un kernel, y luego monitorear los resultados en tiempo real. Puede evitar el ciclo change-compile-test porque todo está compilado mientras escribe. Los errores de sintaxis y similares aparecerán a medida que cambie el código, lo que hace que sea bastante fácil identificarlos.

He utilizado esta herramienta para desarrollar y probar los sombreadores OpenGL, que tienen muchas cosas en común con los núcleos OpenCL.

Cuestiones relacionadas