msDebug工具使用"-O0 -g"编译算子时,stack frame size超出限制
现象描述
出现以下报错:
1 2 3 4 | [ 33%] Building CCE object cmake/npu/CMakeFiles/reduce_sum_custom_npu.dir///reduce_sum_custom.cpp.o error: stack frame size (16024) exceeds limit (16000) in function '_ZN7AscendC9ReduceSumIDhEEvRKNS_11LocalTensorIT_EES5_S5_i' error: stack frame size (16024) exceeds limit (16000) in function '_ZN7AscendC9ReduceSumIDhEEvRKNS_11LocalTensorIT_EES5_S5_i' 2 errors generated. |
解决措施
出现该错误代表核函数使用的栈空间过大,超过了硬件限制,可通过以下两种方法进行解决:
- 手动增加编译选项 --cce-ignore-always-inline=true ,解除Ascend C相关函数声明时设置的inline属性,使函数运行正常跳转,减少栈空间使用大小。
- 更新编译器版本,将编译选项设置为 -O0 -g时,编译器会自动使能 --cce-ignore-always-inline=true。
使用ccev -v命令可查询编译器版本,建议使用2024-07及之后的编译器版本。
父主题: FAQ