据说GPU中没有stack,是不是Device端程序不能调用其他函数,只能按过程方式编写?
还有就是,是不是也不能够使用类?
这个,cuda kernel部分把持C++,目前好像只是不支持虚函数,但是你用C++的话,可能要付出代价,至少目前这种可能性很大。
这个,cuda kernel部分把持C++,目前好像只是不支持虚函数,但是你用C++的话,可能要付出代价,至少目前这种可能性很大。
可以实用类,但对C++的支持还很初步,目前CUDA中使用ABI(二进制程序接口)模拟stack,来支持递归,但递归深度的限制比较大,且在涉及到全局同步的递归算法时效率很低。在fermi之前的架构中一般用shared memory或local memory(相当于opencl中的private memory,opencl中的local memory等同于CUDA中的shared memory)模拟stack,不过只支持短深度的stack,在fermi上local memory的空间较之以前大了很多,共享内存也大了3倍,因此使用同类技术模拟stack的可行深度也大了很多,但目前不建议在CUDA内核中使用递归算法,如果可能,可以解递归成循环,或者在host端递归调用CUDA内核
同意楼上