Pregunta

Si tengo algo como:

err = clEnqueueReadBuffer(cmdQueue, output, CL_TRUE, 0, sizeof(float) * data_sz, &results, 0, NULL, NULL);

Me gustaría hacer:

if (err != CL_SUCCESS){
    perror("Read Failed!");
}

Pero las constantes de error como "cl_host_out_of_memory" y similares son (comprensiblemente) no conocidos por perror ().

Podría dar la vuelta a los archivos .h asociados con OpenCL, pero esa no es una solución ideal. Estoy abierto a cualquier otra forma conveniente de rastrear los números de error. Estoy en OSX Snow Leopard (incluido eso por si acaso, pero no creo que sea relevante)

¿Fue útil?

Solución

Si tiene el Nvidia OpenCl SDK, entonces podría usar el oclErrorString() función proporcionada por oclutils.

Otros consejos

No hay ninguno actualmente. Terminé escribiendo el mío, al estilo de gluErrorString(). Acabo de pegar todo el cl_error codifica en un archivo y procesó cada línea en emacs para convertirlo en un montón de casos dentro de una instrucción Switch (para permitir entradas discontigentes) que devuelven cadenas constantes. Fue bastante fácil y bastante útil. Puedo publicarlo en algún lugar si quieres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top