有没有人知道,是否可以像OpenGL一样在不同的上下文之间共享OpenCL内存对象?
我想要向内核传递两个属于不同上下文的内存对象...
有没有人知道,是否可以像OpenGL一样在不同的上下文之间共享OpenCL内存对象?
我想要向内核传递两个属于不同上下文的内存对象...
我不确定这是否可行,但如果像Klee1所说的那样,那个部分不可能实现,我建议尝试以下方法:
1)使用启用共享内存的单个GL上下文创建您的两个CL上下文,每个CL上下文对应一个内存对象。
2)在需要在两者之间移动数据时,使用GL进行帧缓冲区传输。
... 这将使数据保持在GPU内,并节省大量时间,而无需在PCI-E总线上双向复制数据....
我认为使用OpenCL直接实现这个功能是不可能的。这是因为在OpenCL中定义上下文、队列和内存的方式。如果你从两个不同的上下文传递内存,那么很可能数据在两个不同的设备上,我们就不知道在哪个设备上执行计算。
如果您想执行此类型的计算,您首先需要将数据从一个上下文复制到另一个上下文。可以按照以下步骤完成:
如果您有两个在不同命令队列中的缓冲区(在同一上下文中),则可以按照OpenCL 1.2规范A.1节中指定的方式共享它们。