使用 CL_MEM_READ_WRITE 和 CL_MEM_READ 标志创建的内存读取速度之间的差异
Difference between reading speed from a memory create with CL_MEM_READ_WRITE and CL_MEM_READ flags
在第一阶段的项目中,我生成了一些顶点,然后在第二阶段读取这些顶点,然后创建连接数组。对于我的顶点,我使用了 CL_MEM_READ_WRITE。我想知道如果我在第一阶段使用 CL_WRITE 内存然后将其复制到另一个 CL_READ 内存用于第二阶段,我是否会提高性能?因为可能他们每个人都有自己的优化以获得最大的性能。
可能不会。我预计缓冲区副本的成本远高于任何优化。
此外,我查看了 AMD APP OpenCL 编程指南,但在使用 READ_ONLY
或 WRITE_ONLY
缓冲区时没有发现任何关于优化的指示。
我的理解是,访问标志仅供 OpenCL 运行时使用,以决定何时需要在不同内存之间复制缓冲区数据spaces/areas。
在CL_CREATEBUFER的第二个参数中传递的标志只指定了内核端如何访问内存space。
在第一阶段的项目中,我生成了一些顶点,然后在第二阶段读取这些顶点,然后创建连接数组。对于我的顶点,我使用了 CL_MEM_READ_WRITE。我想知道如果我在第一阶段使用 CL_WRITE 内存然后将其复制到另一个 CL_READ 内存用于第二阶段,我是否会提高性能?因为可能他们每个人都有自己的优化以获得最大的性能。
可能不会。我预计缓冲区副本的成本远高于任何优化。
此外,我查看了 AMD APP OpenCL 编程指南,但在使用 READ_ONLY
或 WRITE_ONLY
缓冲区时没有发现任何关于优化的指示。
我的理解是,访问标志仅供 OpenCL 运行时使用,以决定何时需要在不同内存之间复制缓冲区数据spaces/areas。
在CL_CREATEBUFER的第二个参数中传递的标志只指定了内核端如何访问内存space。