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