【发布时间】:2015-01-10 23:17:36
【问题描述】:
假设我使用 OpenCL 来管理内存(因此 GPU/CPU 之间的内存管理使用相同的代码),但我的计算使用优化的 CUDA 和 CPU 代码(不是 OpenCL)。我还能使用 OpenCL 设备内存指针并将它们传递给 CUDA 函数/内核吗?
【问题讨论】:
-
一言以蔽之,你不能
假设我使用 OpenCL 来管理内存(因此 GPU/CPU 之间的内存管理使用相同的代码),但我的计算使用优化的 CUDA 和 CPU 代码(不是 OpenCL)。我还能使用 OpenCL 设备内存指针并将它们传递给 CUDA 函数/内核吗?
【问题讨论】:
AFAIK 这是不可能的,但没有技术上的原因你不应该这样做。
NVIDIA 可以构建 OpenCL API 扩展以与 CUDA 互操作,就像 Direct3D 和 OpenGL 的互操作性规定一样。
【讨论】:
由于 CUDA 和 OpenCL 都可以与 OpenGL 互操作,因此您可以将其作为中间地带进行探索。我成功地能够从 OpenCL(作为图像)和 CUDA 访问相同的 OpenGL 纹理,因此您可能能够对数据缓冲区执行相同的操作(我不确定 OpenGL 表示会是什么) .
【讨论】: