gpt4 book ai didi

queue - OpenCL 事件和命令队列

转载 作者:行者123 更新时间:2023-12-04 19:20:58 28 4
gpt4 key购买 nike

我正在将 CUDA 应用程序 ( this if you must know ) 翻译成 OpenCL。原始应用程序使用 C 风格的 CUDA API,使用单个流只是为了避免读取结果时的自动忙等待。

现在我注意到 OpenCL 命令队列看起来很像 CUDA 流。但在 the device read command ,同样在写入和内核执行命令中,我也注意到事件的参数。所以我想知道,执行设备写入、多个内核(例如,一次调用一个内核,然后调用另一个内核 100 次)和设备读取需要什么?

  • 如果我只是将它们按顺序排列到同一个队列中,它们会像在 CUDA 中那样按顺序执行吗?
  • 如果这不起作用,我可以/应该我菊花链事件,使每个调用的等待列表成为前一个调用的事件吗?
  • 或者我应该将所有以前的事件添加到每个调用的等待列表中,比如是否有 N^2 搜索依赖项或其他什么?
  • 或者我是否只需要为每个调用单独调用 event.wait(),就像在 AMD's tutorial 中所说的那样?

  • 谢谢!

    最佳答案

    这取决于您如何创建命令队列。在 clCreateCommandQueue 中,有一个属性参数可以包含 CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE,它可以在命令队列中实现非顺序执行。

    如果设置了该属性,命令可能会乱序或并行执行,同步它们的唯一方法是使用事件。

    如果未设置该属性,则命令在队列中按顺序执行。

    关于queue - OpenCL 事件和命令队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3551457/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com