我正在编写一个多 GPU 并行算法。我面临的问题之一是找出如果我将一个 cl_mem 推送到多个设备并让它们同时运行同一个内核会发生什么。内核将对传递给设备的内存进行更改。
编写和调试 OpenCL 代码非常耗时。所以在我开始做之前,我想从 Stackoverflow 其他用户那里得到一些建议——我想知道在以下两种情况下做这样的事情的后果(例如,在执行过程中是否会引发任何异常?数据是否同步?当 CL_MEM_COPY_HOST_PTR使用的是这个 cl_mem 指向的同一内存区域是否正确复制到设备?等):
- 使用 CL_MEM_COPY_HOST_PTR 创建内存
- 使用 CL_MEM_USE_HOST_PTR 创建内存