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