CUDA是否支持递归?CUDA是否支持递归?
回答
它确实在NVIDIA硬件支持计算能力2.0和CUDA 3.1:加入到CUDA C
个新的语言特性 /C++包括:
支持功能 指针和递归让它更容易 将许多现有算法移植到 Fermi GPU
http://developer.nvidia.com/object/cuda_3_1_downloads.html
递归: 我找不到NVIDIA的网站代码示例,但对forum有人张贴这样的:
__device__ int fact(int f)
{
if (f == 0)
return 1;
else
return f * fact(f - 1);
}
任何递归算法都可以用堆栈和循环来实现。这更多的是一种痛苦,但如果你真的需要递归,这可以工作。
尽管它只支持特定芯片的递归,但有时您可以通过“模拟”递归获得:see how I used compile-time recursion for my CUDA raytracer。
非常有用!荣誉 – 2013-12-30 12:24:09
我认为这会产生比实际递归更快的代码。 – 2013-12-30 12:25:28
@林珉:啊,但是我的评论还是在1分呢?你欠我一个赞! :-) – ttsiodras 2014-02-10 10:43:17
刚刚在我的电脑上试用了具有1.1计算能力的NVIDIA GPU。它说递归尚不支持。所以它没有任何关系运行时间,但硬件本身
在CUDA 4.1版本中,CUDA仅支持__device__函数的递归,而不支持__global__函数的递归。
确实如此,但它需要开普勒架构来做到这一点。 查看他们关于经典快速排序的最新示例。
http://blogs.nvidia.com/2012/09/how-tesla-k20-speeds-up-quicksort-a-familiar-comp-sci-code/
据我所知,只有最新的开普勒GK110支持动态并行,允许这种递归调用和内核中新线程产卵。在开普勒GK110之前,这是不可能的。并且并不是所有的开普勒架构都支持这一点,只有GK110可以。
如果您需要递归,您可能需要特斯拉K20。我不确定费米是否支持它,从来没有读过它。:\ 但开普勒确实。 =)
如果你的算法包含很多递归,那么支持与否,它不是为GPU设计的,要么重新设计你的algorthims,要么得到一个更好的CPU,无论哪种方式它会更好(我敢打赌,在很多情况下,更好),然后在GPU上执行recurisons。
只有2.0兼容设备上的计算能力后
是的,它支持实际的版本。但是,尽管事实上有可能执行递归函数,但您必须记住,不能预测来自执行堆栈的内存分配(必须执行递归函数才能知道递归的真实深度),因此您的堆栈可能会导致您的目的不够,并且可能需要手动增加默认堆栈大小
- 1. ng-repeat支持递归吗?
- 2. 是否有任何数据库支持相互递归查询
- 3. 拉力赛的提取API是否支持递归提取?
- 4. 是否支持Z3路线图上的递归函数?
- 5. pthreads是否支持查询递归互斥锁的“锁计数”?
- 6. SVN是否支持非递归复制文件夹?
- 7. cuda中是否支持GPU内核队列?
- 8. 是否有任何支持CUDA的JVM实现?
- 9. CUDA 5是否支持设备代码内的STL或THRUST?
- 10. 叮当中的CUDA支持
- 11. 是否支持MSNP9?
- 12. 是否支持DataGrid?
- 13. 是否支持ARC?
- 14. 是否有任何平台不支持重入互斥锁或递归锁?
- 15. 是否有支持左递归的基于PEG的解析器生成器?
- 16. Powershell Get-ADGroup是否递归?
- 17. z3是否支持证明归纳事实?
- 18. Firefox是否支持enablePrivilege(“UniversalBrowserRead”)?
- 19. Xcode 4.3是否支持distcc?
- 20. GCC是否支持C++ AMP
- 21. PySide是否支持Python 3?
- 22. AlertDialog是否支持WebView?
- 23. GWT是否支持php?
- 24. 是否正式支持android.speech.extra.DICTATION_MODE?
- 25. Android 4.0.3是否支持SIP?
- 26. 是否支持WSE 3.0?
- 27. logback是否支持log4j appenders?
- 28. py2app是否支持python3?
- 29. Freemarker是否支持MethodDescriptors?
- 30. JOGL是否支持NURBS?
请注意,所有循环都涉及递归,并且尾递归不会/不应涉及递归函数调用。 – Potatoswatter 2010-09-06 08:35:44
请参阅[这里](http://stackoverflow.com/q/3644809/1129194)以获取更多信息 – 2012-10-13 10:57:04