【问题标题】:In order queue: two kernels - one waiting for event and one not按顺序队列:两个内核 - 一个等待事件,一个不等待
【发布时间】:2014-12-23 22:13:56
【问题描述】:

假设我将两个内核放入一个有序队列中。

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

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

【问题讨论】:

    标签: opencl


    【解决方案1】:

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

    乱序队列要求您自己管理等待列表,但它的优势是任务在满足其先决条件后就可以立即执行。只需确保您的平台支持乱序队列,然后才能最终解决死胡同。查看this SO question的答案。

    【讨论】:

    • 谢谢。不幸的是,似乎没有任何乱序队列实现,至少对于离散 GPU 而言。
    • 我认为自 6xxx 系列以来的大多数 AMD/ATI 卡都应该支持乱序队列。但是您是对的,在跨供应商分发应用程序时,这还不是一个可以依赖的功能。
    • OoO 队列是很好的功能,但不是必须的。这就是为什么一些供应商不实施它们的原因,因为它使驾驶员的生活更轻松。一个好的算法不应该依赖于无序,应该与有序队列(或多个队列)一样好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    相关资源
    最近更新 更多