O que é o equivalente a códigos de erro no OpenCL?
-
25-09-2019 - |
Pergunta
Se eu tenho algo como:
err = clEnqueueReadBuffer(cmdQueue, output, CL_TRUE, 0, sizeof(float) * data_sz, &results, 0, NULL, NULL);
Eu gostaria de fazer:
if (err != CL_SUCCESS){
perror("Read Failed!");
}
Mas as constantes de erro como "cl_host_out_of_memory" e similares são (compreensivelmente) que não são conhecidas por perror ().
Eu poderia dar a volta dos arquivos .h associados ao OpenCL, mas essa não é uma solução ideal. Estou aberto a outras maneiras convenientes de rastrear os números de erros. Estou no OSX Snow Leopard (incluindo isso por precaução, mas não acho que seja relevante)
Solução
Se você tiver o Nvidia OpenCl Sdk, poderá usar o oclErrorString()
função fornecida por oclutils.
Outras dicas
Não há nenhum atualmente. Acabei escrevendo o meu, no estilo de gluErrorString()
. Acabei de colar todos os cl_error
Codifica em um arquivo e processou cada linha em EMACS para convertê -la em vários casos dentro de uma instrução SWITCH (para permitir entradas descontíguas) que retornam seqüências constantes. Foi muito fácil e bastante útil. Eu posso postar em algum lugar, se você quiser.