Question

Si j'ai quelque chose comme:

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

Je voudrais faire:

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

Mais les constantes d'erreur comme "CL_HOST_OUT_OF_MEMORY" et autres sont (naturellement) ne connaît pas perror ().

Je pourrais continuer autour grepper les fichiers .h associés à OpenCL, mais ce n'est pas une solution idéale. Je suis ouvert à toute autre façon pratique de traquer les numéros d'erreur. Je suis sur Mac OS X Snow Leopard (y compris celle juste au cas où, mais je ne pense pas qu'il est pertinent)

Était-ce utile?

La solution

Si vous avez le SDK NVIDIA OpenCL vous pouvez ensuite utiliser la fonction oclErrorString() fournie par oclUtils.

Autres conseils

Il n'y a pas actuellement. Je fini par écrire mon propre, dans le style de gluErrorString(). Je viens collais tous les codes cl_error dans un fichier et chaque ligne traitée Emacs pour le convertir en un tas de cas à l'intérieur d'une instruction switch (pour permettre des entrées discontinus) qui renvoient des chaînes constantes. Il était assez facile, et très utile. Je peux l'afficher quelque part, si vous le souhaitez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top