【发布时间】:2017-10-07 09:47:07
【问题描述】:
OpenCL 最佳实践指南 (https://www.cs.cmu.edu/afs/cs/academic/class/15668-s11/www/cuda-doc/OpenCL_Best_Practices_Guide.pdf) 在第 3.1.3 节中建议使用 clFlush 以确保命令以正确的顺序发生,例如在数据传输之前不会进行处理:
- 为 queue0 传输数据
-
clFlushfor queue0 - 为 queue0 运行内核,为 queue1 传输数据
-
clFlush用于 queue0 和 queue1 - 为 queue1 运行内核并检索 queue0 的数据
-
clFlush他们俩 - 检索 queue1 的数据
这里的回复https://stackoverflow.com/a/12389713/4634819 建议使用事件来实现,看起来一样。
我的问题是:我做对了吗?在这种情况下,clFlush 和事件是否有相同的目的(避免同时执行)?使用哪一个有关系吗?
【问题讨论】: