我目前正在开发一个OpenCL项目,我很奇怪为什么它不支持递归。它与并行性有关吗?
答案 0 :(得分:6)
我认为这与目标硬件有关。要支持递归,需要使用某些类型的OpenCL设备(即GPU)所没有的硬件功能。没有它们,维护调用堆栈和进行间接代码分支是不切实际的。出于同样的原因,NVIDIA不支持所有支持CUDA的硬件的递归。
答案 1 :(得分:3)
它不是OpenCL,它的GPU硬件。 AMD已经制定了未来的指令集架构 这将支持递归。 GPU具有大量寄存器(最高32 K)。所以 小心要求和得到什么。推送/弹出32K寄存器,用于递归调用,不会很快。