【发布时间】:2010-08-23 20:34:37
【问题描述】:
我正在将一个 CUDA 应用程序 (this if you must know) 翻译成 OpenCL。原始应用程序使用 C 风格的 CUDA API,使用单个流只是为了避免在读取结果时自动忙等待。
现在我注意到 OpenCL 命令队列看起来很像 CUDA 流。但是在the device read command 中,同样在写入和内核执行命令中,我也注意到了事件的参数。所以我想知道,按顺序执行设备写入、多个内核(例如,一次调用一个内核,然后调用 100 次另一个内核)和读取设备需要什么?
- 如果我只是将它们按顺序排入同一个队列,它们会像在 CUDA 中那样按顺序执行吗?
- 如果这不起作用,我可以/应该以菊花链方式连接事件,使每个呼叫的等待列表成为上一个呼叫的事件吗?
- 或者我应该将所有以前的事件添加到每个呼叫的等待列表中,例如是否有 N^2 次搜索依赖项或其他什么?
- 或者我是否只需要为每个调用单独调用 event.wait(),就像在 AMD's tutorial 中所说的那样?
谢谢!
【问题讨论】:
标签: queue parallel-processing cuda opencl