我想知道在OpenCL中将内存对象分配给上下文时到底发生了什么。
如果你能帮助我理解这个问题,我将感激不尽: - )
答案 0 :(得分:1)
通常,当运行时处理clEnqueueWriteBuffer / clEnqueueReadBuffer命令时,通常会发生复制。
但是,如果您使用某些标志组合创建了内存对象,则运行时可以选择比此更快地复制内存(如创建之后)或更晚(如运行内核之前的按需,甚至是按需)因为它需要它)。供应商文档通常表明他们是否特别利用了这些标志中的任何一个。
有趣的"有趣的"变体形式:
这些都是"先进的"使用OpenCL缓冲区。你应该从"常规"开始如果他们没有做你需要的事情,就要缓冲并努力工作。
This post相当好地描述了额外的标记。