Opencl 顺序队列:两个内核-一个等待事件,另一个不等待事件

Opencl 顺序队列:两个内核-一个等待事件,另一个不等待事件,opencl,Opencl,假设我将两个内核排列在一个顺序队列中 第一个内核设置为仅在接收到完成事件时运行, 而第二个内核没有等待事件 在这种情况下,运行时会首先执行第二个内核吗?顺序队列将按照您对项目进行排队的顺序执行项目,基本上将每个操作的前一个操作作为等待事件。在示例中,第二个内核应该在第一个内核之后执行 无序队列要求您自己管理等待列表,但有一个优势,即只要满足任务的先决条件,就可以立即执行任务。只需确保您的平台支持无序队列,然后才能结束对死胡同的故障排除。请参阅的答案。谢谢。不幸的是,至少对于离散GPU来说,似乎没

假设我将两个内核排列在一个顺序队列中

第一个内核设置为仅在接收到完成事件时运行, 而第二个内核没有等待事件


在这种情况下,运行时会首先执行第二个内核吗?

顺序队列将按照您对项目进行排队的顺序执行项目,基本上将每个操作的前一个操作作为等待事件。在示例中,第二个内核应该在第一个内核之后执行


无序队列要求您自己管理等待列表,但有一个优势,即只要满足任务的先决条件,就可以立即执行任务。只需确保您的平台支持无序队列,然后才能结束对死胡同的故障排除。请参阅的答案。

谢谢。不幸的是,至少对于离散GPU来说,似乎没有任何无序队列实现。我认为自6xxx系列以来的大多数AMD/ATI卡都应该支持无序队列。但您是对的,在跨供应商分发应用程序时,这还不是一个可以依赖的功能。OoO队列是一个很好的功能,但不是必须的。这就是为什么一些供应商没有实现它们,因为这使司机的生活更轻松。一个好的算法不应该依赖于无序,应该与有序队列(或多个队列)一样有效。