【发布时间】:2017-03-13 21:52:09
【问题描述】:
OpenCL 1.1 标准说 (5.2.3):
如果blocking_map 为CL_FALSE,即map 操作是非阻塞,则 指针指向映射区域在映射命令完成之前不能使用由 clEnqueueMapBuffer 返回的区域。 事件 参数 返回一个事件对象,可用于查询执行情况 map 命令的状态。地图命令完成后, 应用程序可以使用 clEnqueueMapBuffer 返回的指针。
但在(5.9,紧跟在表 5.15 之后)中有以下语句:
使用 clGetEventInfo 确定事件标识的命令是否已完成执行(即 CL_EVENT_COMMAND_EXECUTION_STATUS 返回 CL_COMPLETE) 不是同步点。有没有 保证被命令修改的内存对象 与事件关联的其他命令将可见。
Q1:所以,我想知道是否有其他方法可以“查询执行
map 命令的状态”以及当查询返回 'CL_COMPLETE' 时是否保证内存一致性(在本例中为主机)?
Q2:我错过了什么吗?
Q3:针对这种情况的典型 OpenCL 习惯用法是什么?
【问题讨论】:
标签: multithreading parallel-processing opencl