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

Posted

技术标签:

【中文标题】CUDA ptxas 警告(入口的堆栈大小)【英文标题】:CUDA ptxas warnings (Stack size for entry) 【发布时间】:2012-03-30 21:23:21 【问题描述】:

我在编译 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)

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

【问题讨论】:

我遇到了类似的问题。我怀疑这个问题与递归有关。 【参考方案1】:

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

【讨论】:

【参考方案2】:

您的内核似乎正在使用 malloc()new 运算符在 GPU 堆上动态分配内存。它可能会对内核的性能产生不利影响。

【讨论】:

以上是关于CUDA ptxas 警告(入口的堆栈大小)的主要内容,如果未能解决你的问题,请参考以下文章

为啥数组会引起nvlink警告:入口函数的堆栈大小不能静态确定

cudaErrorIllegalInstruction 递归函数调用

CUDA 退出代码 255,并且 ptxas 致命

CUDA --ptxas-options="-v" 不显示任何输出

win10安装CUDA出现警告,该怎么解决

解决推力/CUDA 警告“无法分辨指针指向的...”