【CUDA编程】【16】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.13.Call Stack】

Call Stack

Posted by x-jeff on December 8, 2024

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。

1.Call Stack

在计算能力2.x及以上的device中,可以使用cudaDeviceGetLimit()查询调用栈(call stack)的大小,并使用cudaDeviceSetLimit()设置调用栈的大小。

当调用栈溢出时,如果应用程序通过CUDA调试器(例如CUDA-GDB或Nsight)运行,kernel调用会因为栈溢出错误而失败,或者会因为某种启动错误而失败。当编译器无法确定栈大小时,会发出警告,提示无法静态确定栈大小。这种情况通常出现在递归函数中。一旦出现此警告,如果默认栈大小不足,用户需要手动设置栈大小。