【问题标题】:Dynamic parallelism is supported by OpenCL...?OpenCL 支持动态并行...?
【发布时间】:2013-07-24 16:04:23
【问题描述】:

我正在尝试在 OpenCL 内核中使用递归。编译成功,但运行时出现编译错误,所以我想知道,由于 CUDA 现在支持动态并行,OpenCL 是否支持动态并行?

【问题讨论】:

  • 至少不会立即成为核心功能。唯一的可能是作为扩展。但是考虑到即使在 CUDA 中动态并行还相当年轻(请记住,您还需要相应的硬件),尤其是 NVIDIA 对 OpenCL 的普遍接受速度相当慢(他们甚至不支持 CL 1.2),我d 说 no,非常安全。
  • “编译成功,但运行时出现编译错误” - 哪个“编译” 成功但导致错误,什么是“正在运行” 表示在这种情况下。我猜第一个 "compilation" 是指主机编译,而第二个是指 OpenCL 编译,但澄清一下可能是个好主意。

标签: opencl


【解决方案1】:

OpenCL 不支持递归。请参阅标准 v1.2 的第 6.9 节中的第 i 点。

编辑: CUDA 的新动态并行功能与递归没有任何关系(CUDA 不久前已经支持它。请参阅question。这项新功能允许线程在设备上运行以配置和启动以前只能由主机完成的新网格。有关概述,请参阅此document

第二次编辑:关于@Michael 的回答:这只是规范,您将不得不等待实施发布。此外,将来您还必须确保拥有适当的硬件(即使是动态并行,CUDA 也仅支持功能 3.5 及更高版本的设备)。所以当你问你的问题时,直到今天:没有 OpenCL 实现支持动态并行。

【讨论】:

  • OpenCL 2.0 实现现已推出。
【解决方案2】:

OpenCL 2 现在支持动态并行。 Khronos Group 在 2013 年的 Siggraph 上宣布了这一点。

你可以找到规格here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 2018-02-06
    • 1970-01-01
    • 2013-08-30
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多