算子开发入门hello world程序编译时报错解决办法。
发表于2024-07-15 12:45:48
0 查看
背景
- 参考官方的算子开发快速入门教程:HelloWorld,完整源码在gitee
- 我的环境:香橙派 AI Pro 20T, CANN版本:8.0RC1alpha3
- 运行日志:
- 报错信息:
解决办法
看报错信息,应该是bisheng没有'-fcce-no-kernel-type-section'这个参数。我们可以通过下面的命令查看bisheng编译器的所有可用参数,并且参数信息保存到bisheng_help.log中。
打开这个bisheng_help.log文件,搜索fcce关键字,确实没有看到'-fcce-no-kernel-type-section',但是有看到下面两个类似的参数,从参数定义来看,-fcce-kernel-type-section更为接近,估计是换成这个参数了。
解决思路,我们需要将-fcce-no-kernel-type-section换成bisheng编译器支持的-fcce-kernel-type-section,可以通过grep命令去CANN安装路径去搜索这个参数。
可以看到搜到4个文件,其实8.0就是8.0RC的软链接,不信我们可以用下面的命令测试一下:
所以理论上来说,只修改2个文件就行,这里我修改8.0RC对应的两个文件,将-fcce-no-kernel-type-section换成-fcce-kernel-type-section即可。
修改完后,删除build目录,重新编译一次,可以编译通过。但是print没有输出,看了一下代码,CANN 8.0RC1beta3版,里面的print确实是啥也没干。
但是文档写的确实有print出来东西,怀疑是CANN8.0RC2alpha3支持printf函数输出东西,于是我又升级了一下CANN8.0RC2alpha3版本,但是还是没有数据,也没有报错,看了一下printf接口的实现,确实也是空的,所以暂时不管了。
本帖最后由 匿名用户 于 2024/07/18 16:09:09 编辑
背景
解决办法
看报错信息,应该是bisheng没有'-fcce-no-kernel-type-section'这个参数。我们可以通过下面的命令查看bisheng编译器的所有可用参数,并且参数信息保存到bisheng_help.log中。
打开这个
bisheng_help.log文件,搜索fcce关键字,确实没有看到'-fcce-no-kernel-type-section',但是有看到下面两个类似的参数,从参数定义来看,-fcce-kernel-type-section更为接近,估计是换成这个参数了。-fcce-kernel-launch-custom Transform the kernel launch expression to a user-defined host function. Please be aware that this option changes the compilation behavior of cce host-side. -fcce-kernel-type-section Generate meta sections for kernel types.解决思路,我们需要将
-fcce-no-kernel-type-section换成bisheng编译器支持的-fcce-kernel-type-section,可以通过grep命令去CANN安装路径去搜索这个参数。可以看到搜到4个文件,其实8.0就是8.0RC的软链接,不信我们可以用下面的命令测试一下:
所以理论上来说,只修改2个文件就行,这里我修改8.0RC对应的两个文件,将
-fcce-no-kernel-type-section换成-fcce-kernel-type-section即可。修改完后,删除build目录,重新编译一次,可以编译通过。但是print没有输出,看了一下代码,CANN 8.0RC1beta3版,里面的print确实是啥也没干。
// printf关联了AscendC::PRINTF #define print PRINTF template <class... Args> __aicore__ inline void PRINTF(__gm__ const char* fmt, Args&&... args) { // 不走上面的分支,走else分支,所以啥也没干 #ifdef ASCENDC_DUMP printfImpl(fmt, args...); #else return; #endif }但是文档写的确实有print出来东西,怀疑是CANN8.0RC2alpha3支持printf函数输出东西,于是我又升级了一下CANN8.0RC2alpha3版本,但是还是没有数据,也没有报错,看了一下printf接口的实现,确实也是空的,所以暂时不管了。