OpenCL支持动态并行性。。。?

OpenCL支持动态并行性。。。?,opencl,Opencl,我试图在OpenCL内核中使用递归。编译是成功的,但在运行时会出现编译错误,所以我想知道,由于CUDA现在支持动态并行,OpenCL是否支持动态并行?OpenCL不支持递归。见标准v1.2第6.9节第i点 编辑:CUDA的新动态并行功能与递归无关(CUDA不久前已经支持该功能。请参见此。此新功能允许设备上运行的线程配置和启动新网格,而这以前仅由主机完成。有关概述,请参见此 第二次编辑:关于@Michael的答案:这只是规范,您必须等待实施版本。此外,在未来的这一点上,您还必须确保拥有合适的硬件(

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

OpenCL不支持递归。见标准v1.2第6.9节第i点

编辑:CUDA的新动态并行功能与递归无关(CUDA不久前已经支持该功能。请参见此。此新功能允许设备上运行的线程配置和启动新网格,而这以前仅由主机完成。有关概述,请参见此


第二次编辑:关于@Michael的答案:这只是规范,您必须等待实施版本。此外,在未来的这一点上,您还必须确保拥有合适的硬件(CUDA仅支持功能为3.5及更高的设备的动态并行性)所以当你问你的问题时,直到今天:没有OpenCL实现支持动态并行。

现在OpenCL 2中支持动态并行。 Khronos集团在2013年Siggraph大会上宣布了该计划


您可以发现规范

至少不能直接作为核心功能。唯一的可能是作为扩展。但考虑到即使在CUDA中动态并行性也相当年轻(请记住,您还需要相应的硬件),尤其是NVIDIA总体上对OpenCL的接受相当缓慢(他们甚至不支持CL 1.2),我会说不,安全性很高。“编译是成功的,但运行时会产生编译错误”-哪一个“编译”在导致错误时是成功的,“运行”在这种情况下意味着什么。我猜第一个“编译”您的意思是主机编译,而第二个意思是OpenCL编译,但一些澄清可能是一个好主意。OpenCL2.0实现现在可用。