Parallel processing 无序命令队列在AMD GPU上有用吗?

Parallel processing 无序命令队列在AMD GPU上有用吗?,parallel-processing,opencl,amd-gpu,Parallel Processing,Opencl,Amd Gpu,在我看来,一个opencl命令队列不会将命令分派到多个硬件队列。因此,无序命令队列中的命令仍然会一个接一个地执行,只是没有按照它们排队的顺序执行 因此,如果我想使用多个硬件队列,我所能做的就是创建多个opencl命令队列?OOO(无序)队列可以满足用户事件依赖性的需要。在这种类型的应用程序中使用单个队列可能会导致阻塞队列等待永远不会出现的用户事件。每个作业创建一个队列也是非最优的 如果您希望在执行中实现并行性,那么OOO不是您所需要的。但是多个队列 一种常见的方法是使用IO队列和运行内核队列。

在我看来,一个opencl命令队列不会将命令分派到多个硬件队列。因此,无序命令队列中的命令仍然会一个接一个地执行,只是没有按照它们排队的顺序执行

因此,如果我想使用多个硬件队列,我所能做的就是创建多个opencl命令队列?

OOO(无序)队列可以满足用户事件依赖性的需要。在这种类型的应用程序中使用单个队列可能会导致阻塞队列等待永远不会出现的用户事件。每个作业创建一个队列也是非最优的

如果您希望在执行中实现并行性,那么OOO不是您所需要的。但是多个队列

一种常见的方法是使用IO队列和运行内核队列。 但在多线程处理方案中,也可以使用每个线程的队列。每个线程的IO将与其他线程的执行重叠


注意:nVIDIA确实支持在单个队列中并行执行作业,但这超出了标准。

我在hd7870上进行了尝试,它在两个实例(每个gpu)上达到了最大性能,这两个实例是具有各自队列的独立上下文,而不是具有多个ooo CQ的单个上下文。因此,具有多个ooo CQ的单个上下文会更好,例如同时有3个或4个CQ。(与显式集合点同步)。但是他们说Nvidia更好。很久以前我做了很多测试。即使GPU使用率达到100%,实际性能也不会随着不同的上下文而提高。我猜这只是他们进行测量的方式,他们将上下文切换所花费的时间计算为有效百分比。拥有一个上下文和多个上下文一样快,即使在第一种情况下使用率没有达到100%。