Какие другие функции OpenCL следует вызывать, когда enqueueNDRangeKernel вызывается повторно?
Мне не удалось найти учебник, который показывает использование enqueueNDRangeKernel таким образом, и мои попытки кодирования, к сожалению, привели к ошибке необработанного исключения. Подобный вопрос задавался ранее, но ответы, похоже, не относятся к моей ситуации.
В настоящее время у меня есть цикл, в котором я вызываю функции OpenCL в следующей последовательности:
- setArg
- enqueueNDRangeKernel
- enqueueMapBuffer
- enqueueUnmapMemObject
Я вызываю setArg, потому что вход в ядро изменяется перед каждым вызовом enqueueNDRangeKernel. Я вызываю enqueueMapBuffer и enqueueUnmapMemObject, так как вывод из ядра используется в коде хоста. Ядро работает нормально с первого раза (вывод правильный), но во время второго прохода через цикл я получаю необработанную ошибку исключения при вызове enqueueMapBuffer.
Я использую следующую настройку:
- Intel OpenCL SDK с CL_DEVICE_TYPE_CPU (на процессоре Intel i7)
- Visual Studio 2010 IDE в Windows 7
- Хост-код написан на C ++ с привязками OpenCL C ++.
Спасибо.