是否可以在OpenCL中为不同的内核使用相同的内存缓冲区?

时间:2013-04-25 16:50:11

标签: parallel-processing opencl

我正在实现一个内核函数,其中来自主机端的内存被转移到内核。内核有三个函数。是否可以在不同的时间与内核共享相同的内存缓冲区?

3 个答案:

答案 0 :(得分:1)

是的,多个内核可以使用相同的内存对象,只要不存在同时执行内核的风险。通常的“单个命令队列不是通过乱序执行创建的”。

答案 1 :(得分:1)

是的,我用我的光线追踪器做到这一点。我有三个内核。改变几何的预处理器,光线跟踪器和进行图像处理的后处理器。我与所有这三个共享内存缓冲区。在开始下一个内核之前,我确保内核完成。

答案 2 :(得分:1)

您可以毫无问题地共享内存。如果内存是只读的,你甚至可以使用该内存对象作为同时运行的2个内核的输入(即:不同的GPU /相同的上下文)。

但是,如果要覆盖内存区域,请小心并使用事件来同步内核。我强烈推荐事件机制,因为它可以对另一个队列中的内存区域进行并行I / O读写。