4

我目前正在开发一个 OpenCL 项目,我想知道为什么它不支持递归。它与并行性有关吗?

4

2 回答 2

7

我认为它与目标硬件有关。支持递归需要一些特定类别的 OpenCL 设备(即 GPU)所不具备的硬件功能。没有它们,维护调用堆栈和进行间接代码分支是不切实际的。出于同样的原因,NVIDIA 不支持所有支持 CUDA 的硬件上的递归。

于 2012-04-07T07:43:21.930 回答
4

它不是 OpenCL,而是它的 GPU 硬件。AMD 已经制定了支持递归的未来指令集架构。GPU 有大量的寄存器(高达 32 K)。所以要小心要求和得到什么。对于递归调用,推送/弹出 32K 寄存器不会很快。

于 2012-04-07T17:13:44.100 回答