out of order 与多个queue的命令执行区别?

清涧煎饼 2015-07-23 06:04:48
本人第一次使用out of order,有些不明白的地方
out of order是不知只针对一个queue中多个命令的执行顺序? 然后通过等待事件调整执行顺序?
如果创建多个queue,然后每个queue的命令执行设为非阻塞,是不是也可以通过等待事件来调整执行顺序?

这两者的主要区别在哪? 先谢谢!

...全文
853 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluewanderer 2015-09-20
  • 打赏
  • 举报
回复
首先顺序的command queue里执行顺序就是加入顺序,没办法改的。 然后无序command queue和多个command queue是两回事。不同command queue里的任务是可以并发的,所以有一个command queue负责提交kernel,一个command queue负责处理IO的模式。新的GPU支持4路以上的多任务并发,要用上4路并发就得有4个command queue。 一个command queue里的任务最终还是一个接一个的执行,是不是无序只是说是不是按添加的顺序执行(但是据说N卡没按套路出牌,无序command queue里的任务能并行,但是没用过不知道)。
zenny_chen 2015-09-18
  • 打赏
  • 举报
回复
引用 1 楼 shihufeng 的回复:
cl_event在与命令绑定 成功后获取到了信息,进而使下个与其等待相关的命令进行执行,然后cl_event是否需要进行释放?如果是循环执行不释放是否有影响?
应该需要调用clReleaseEvent来释放之前绑定的事件对象。由于每次调用clEnqueue类接口而绑定的事件对象都是不同的,所以如果在循环里面的话,需要在每次迭代完成后使用该事件对象。
fronteer 2015-08-17
  • 打赏
  • 举报
回复
我的理解是通过 等待 cl_event 调整执行顺序 其实质是完全由 Host 端来确定执行顺序,因为通常情况下 只有一个Host 线程来提交任务并进行等待。
清涧煎饼 2015-07-24
  • 打赏
  • 举报
回复
cl_event在与命令绑定 成功后获取到了信息,进而使下个与其等待相关的命令进行执行,然后cl_event是否需要进行释放?如果是循环执行不释放是否有影响?

603

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧