【发布时间】:2011-12-09 23:13:37
【问题描述】:
enqueueNDRangeKernel 重复调用时还应该调用哪些其他 OpenCL 函数?
我无法找到以这种方式显示 enqueueNDRangeKernel 使用的教程,不幸的是,我的编码尝试导致了未处理的异常错误。之前有人问过类似的问题,但回答似乎不适用于我的情况。
我目前有一个循环,我在其中按以下顺序调用 OpenCL 函数:
- setArg
- enqueueNDRangeKernel
- enqueueMapBuffer
- enqueueUnmapMemObject
我调用 setArg 是因为内核的输入在每次调用 enqueueNDRangeKernel 之前都会发生变化。我正在调用 enqueueMapBuffer 和 enqueueUnmapMemObject,因为内核的输出用于主机代码。内核第一次运行正常(输出正确),但在第二次通过循环时,调用 enqueueMapBuffer 时出现未处理的异常错误。
我正在使用以下设置:
- 带有 CL_DEVICE_TYPE_CPU 的 Intel OpenCL SDK(在 Intel i7 CPU 上)
- Windows 7 上的 Visual Studio 2010 IDE
- 主机代码是用 C++ 编写的,带有 OpenCL C++ 绑定。
谢谢。
【问题讨论】: