CUDA ptxas警告(输入的堆栈大小)

CUDA ptxas警告(输入的堆栈大小),cuda,compiler-warnings,Cuda,Compiler Warnings,我在编译CUDA代码时收到了以下我不理解的警告: CUDACOMPILE : ptxas warning : Stack size for entry function '_Z24gpu_kernel_get_3d_pointsiPK8RtmPointS1_PKfS3_P10RtmPoint3DPif' cannot be statically determined. 内核原型是: __global__ void gpu_kernel_get_3d_points(int count1, con

我在编译CUDA代码时收到了以下我不理解的警告:

CUDACOMPILE : ptxas warning : Stack size for entry function
'_Z24gpu_kernel_get_3d_pointsiPK8RtmPointS1_PKfS3_P10RtmPoint3DPif' cannot be statically
determined.
内核原型是:

__global__ void gpu_kernel_get_3d_points(int count1, const RtmPoint *pPoints1,
const RtmPoint *pPoints2, const float *PL, const float *PR, RtmPoint3D *pPoints3D,
int *pGlobalCount, float bbox)

所有指针都是指向设备内存的指针。我不明白为什么编译器在确定堆栈大小时会有问题。内核中有一些局部变量,但不多。有什么想法吗?这个警告重要吗?

看起来您的内核正在使用malloc()或新操作符在GPU堆上动态分配内存。它可能会对内核的性能产生不利影响。

当函数是递归函数时,会出现此警告。Cuda尝试在执行之前分配堆栈空间,这不是什么大问题,除非您使用递归。它的问题是堆栈大小不可预测。递归的深度不是已知值,因此堆栈将使用的内存未知。此警告实际上并不相关,但如果您的数据超出了GPU堆栈,则必须手动增加堆栈大小。

我遇到了类似的问题。我怀疑这个问题与递归有关。