有谁知道,是否可以像 opengl 那样在不同的上下文之间共享 opencl 内存对象?
我想将属于不同上下文的两个内存对象传递给内核......
我不知道这是否可行,但如果正如 Klee1 所说,那一点是不可能的,我可以试试这个:
1) 从一个启用共享的 GL 上下文创建两个 CL 上下文中的每一个,每个 CL 上下文一个内存对象。
2)当你想在两者之间移动数据时,使用 GL 在两者之间进行帧缓冲 blit。
...这会将数据保留在 GPU 中并为您节省大量时间,而不是通过 PCI-E 总线双向复制......
我认为这不可能直接用 OpenCL 来完成。这是因为在 OpenCL 中定义上下文、队列和内存的方式。如果您从两个不同的上下文传递内存,那么数据很可能在两个不同的设备上,我们不知道要在哪个设备上执行计算。
如果您想执行这种类型的计算,您首先必须将数据从一个上下文复制到另一个上下文。可以这样做:
相反,如果您在不同的命令队列中有两个缓冲区(在相同的上下文中),则可以按照 OpenCL 1.2 规范的第 A.1 节中的规定共享它们。