Что эквивалентно perror() для кодов ошибок в OpenCL?

Если у меня есть что-то вроде:

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 (включая это на всякий случай, но я не думаю, что это актуально)


person Derrick    schedule 08.03.2010    source источник


Ответы (2)


Если у вас есть NVIDIA OpenCL SDK, вы можете использовать функцию oclErrorString(), предоставляемую oclUtils.

person Tom    schedule 08.03.2010

В настоящее время нет. В итоге я написал свой собственный, в стиле gluErrorString(). Я просто вставил все коды cl_error в файл и обработал каждую строку в Emacs, чтобы преобразовать ее в группу случаев внутри оператора switch (чтобы разрешить несмежные записи), которые возвращают константные строки. Это было довольно просто и весьма полезно. Могу выложить куда-нибудь, если хотите.

person gavinb    schedule 19.03.2010
comment
Не могли бы вы опубликовать функцию? Я буду признателен. - person Alexander Theißen; 04.06.2013