Что такое перрор (), эквивалент для кодов ошибок в OpenCL?
-
25-09-2019 - |
Вопрос
Если у меня есть что-то вроде:
err = clEnqueueReadBuffer(cmdQueue, output, CL_TRUE, 0, sizeof(float) * data_sz, &results, 0, NULL, NULL);
Я хотел бы сделать:
if (err != CL_SUCCESS){
perror("Read Failed!");
}
Но константы ошибок, такие как «CL_HOST_OUT_OF_MEMORY», и тому подобное, не известны PERROR ().
Я мог бы обойти файлы .h, связанные с OpenCL, но это не идеальное решение. Я открыт для любых других удобных способов отслеживания номеров ошибок. Я на osx Snow Leopard (в том числе, на всякий случай, но я не думаю, что это актуально)
Решение
Если у вас есть NVIDIA OpenCL SDK, вы можете использовать oclErrorString()
Функция, предоставленная окклатилами.
Другие советы
В настоящее время нет нет. Я закончил писать свои собственные, в стиле gluErrorString()
. Отказ Я просто вставил все cl_error
Коды в файл и обработают каждую строку в Emacs для преобразования его в кучу случаев внутри оператора выключателя (чтобы разрешить разрывные записи), которые возвращают постоянные строки. Это было довольно легко и довольно полезно. Я могу опубликовать его где-то, если вам нравится.