CANN文档算子开发中算子开发进阶篇中 使用build.sh编译报错的一个解决方案
收藏回复举报
CANN文档算子开发中算子开发进阶篇中 使用build.sh编译报错的一个解决方案
t('forum.solved') 已解决
发表于2024-06-05 07:00:10
0 查看

首先介绍一下我的硬件和环境,我的硬件是香橙派,芯片是Ascend310B4,使用的CANN的版本是8.0.RC1。

在学习算子开发过程中,我跟着CANN社区版的文档一步一步配置。参考的是 快速上手端到端算子开发。在创建add_custom.json后,使用msopgen工具来创建我的工程

/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/bin/msopgen gen -i /root/my_robot/ascend_operator/test/add_custom.json -c ai_core-Ascend310B4 -lan cpp -out /root/my_robot/ascend_operator/test/

然后修改修改CMakePresets.json中ASCEND_CANN_PACKAGE_PATH为CANN软件包安装路径。

{
    ……
    "configurePresets": [
        {
                ……
                "ASCEND_CANN_PACKAGE_PATH": {
                    "type": "PATH",
                    "value": "/usr/local/Ascend/latest"        //请替换为CANN软件包安装后的实际路径
                },
                ……
        }
    ]
}

接下来我直接使用./build.sh进行编译。此时会报错 true

此时我很不解,在论坛和gitee的仓库中翻了翻,也有不少人遇到这个问题,大多说的都是CANN版本的问题,于是我从7.0.RC1尝试到8.0.RC2。这个报错依旧存在。

于是我将官方仓库的这一章节的代码下载下来直接进行编译,发现并没有这个报错。此时我感觉非常奇怪。

下面我介绍一下我的处理方案:

删掉使用msopgen工具生成的cmake这个文件夹,将上面gitee仓库的cmake放到自己的工程中,然后修改CMakePresets.jsonASCEND_COMPUTE_UNIT的值,将ascend310b4改为ascend310b

"ASCEND_COMPUTE_UNIT": {
                    "type": "STRING",
                    "value": "ascend310b"
                },

然后将/op_hostadd_custom.cppthis->AICore().AddConfig("ascend310b4");修改为this->AICore().AddConfig("ascend310b");

接下来编译就没有错了。

这是我使用的一个临时的处理方案,我并不清楚使用msopgen工具创建的工程为什么会出现这个问题,希望有大佬能帮我解答一下。另外想确定一下有没有更好的解决方案。

我要发帖子