就像使用opengl共享缓冲区而不是另一个opencl。就像将缓冲区迁移到另一个opencl上下文但没有事件依赖。
我找不到任何关于它的信息,但我需要将opencl缓冲区数据复制到另一个使用相同设备的opencl上下文缓冲区,我需要远离主机端副本。我需要设备端(来自/来自同一设备)缓冲区副本。我正在使用的缓冲区还有很多事件附加到它们的操作中。
我正在研究的一个项目有多个上下文使用双缓冲管道计算不同的内核和多个GPU,我试图在不触及pci-e桥的情况下将相同的行为适用于单个GPU。
答案 0 :(得分:1)
您无法直接在OpenCL上执行此操作,因为内存是按上下文分配的。请注意,如果平台支持,则在同一上下文中可以有多个设备,并且同一上下文中的所有设备将共享相同的内存对象。 migration queue operation允许对每个设备上的内存分配进行细粒度控制(尽管这不是必需的)。
使用SYCL(基于OpenCL的Khronos标准)时,缓冲区与上下文无关,并且运行时会在需要时跨上下文迁移数据。在这种情况下,运行时将选择最合适的方法来跨上下文进行传输。例如,如果平台具有特定于供应商的功能以便以有效的方式允许此操作,则运行时将利用它而无需使用交互。