摘要:在学习Ascend C算子开发进阶课程的时候,进行Ascend C自定义算子工程、算子调用等实验,在开发环境中遇到了一些问题,在这里记录一下。

首先如果在启智社区CANN版本为6.3 ,要进行Ascend C算子开发,需要更新CANN版本。 在CANN社区根据你的架构,比如我的为CPU架构位aarch64,所以下载Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run 到本文目录下,下载好之后,运行以下命令赋权并安装:

chmod +x Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run
./Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run --full

安装成功会显示如下:

Ascend C 算子开发遇到的问题及解决方法_python

说明CANN安装到了/home/ma-user/Ascend目录下。大家根据自己的实际路径写就好了

安装好之后配置环境变量:

source /home/ma-user/Ascend/ascend-toolkit/set_env.sh
export PATH=/home/ma-user/work/cmake-3.26.4-linux-aarch64/bin:$PATH
export ASCEND_HOME_DIR=/home/ma-user/Ascend/ascend-toolkit/latest

下面就可以运行代码了


一、fatel error:register/tilingdata_base.h:No such file or directory

报错找不到头文件:

Ascend C 算子开发遇到的问题及解决方法_Python_02

这个错误是在进行自定义算子工程实验时的编译算子工程出现的,也就是在samples/operator/AddCustomSample/FrameworkLaunch/AddCustom 目录下执行 ./build.sh出现。

起初我的解决方法是设置环境变量,但是还是会报错,会报其他头文件的错误,所以治标不治本。后面看了一个大佬的经验帖子,发现是我的CANN软件包安装后的实际路径写错了,在samples/operator/AddCustomSample/FrameworkLaunch/AddCustom/CMakePresets.json 这个文件中,应该把ASCEND_CANN_PACKAGE_PATH为CANN软件包安装后的实际路径,我的CANN安装在/usr/local/Ascend 下,所以我的路径地址应该为:/usr/local/Ascend/ascend-toolkit/latest,具体可以参考如下:

Ascend C 算子开发遇到的问题及解决方法_Python_03

这样就不会再报头文件错误了。

二、build ops lib error: /usr/bin/ld: cannot find -lexe_graph

/usr/bin/ld: cannot find -lregister /usr/bin/ld: cannot find -ltiling_api collect2: error: ld returned 1 exit status

Ascend C 算子开发遇到的问题及解决方法_python_04

这个错误应该和前面的一样,也是因为CANN路径没有设置正确。解决方案看上面

三、CMake Error at CMakeLists.txt:1 (cmake_minimum_required):CMake 3.16.0 or higher is required. You are running version 3.12.1

Ascend C 算子开发遇到的问题及解决方法_linux_05

如果是在启智社区使用的mindspore2.0.0_cann6.3_notebook镜像,估计就会报这个错误,因为cmake版本太低了,所以需要更新cmake。

wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-aarch64.tar.gz
tar -xf cmake-3.26.4-linux-aarch64.tar.gz
export PATH=/home/ma-user/work/cmake-3.26.4-linux-aarch64/bin:$PATH

/home/ma-user/work/cmake-3.26.4-linux-aarch64/bin 这个目录是你下载的cmake压缩包解压之后的目录,然后就执行以上两步就可以更新完cmake了,我之前更新的时候也踩了很多坑,我是把安装报下载下来,然后还是用bootstrap命令,make,make install等。但是还是没有这两行代码快且有效。

Ascend C 算子开发遇到的问题及解决方法_linux_06

四、ERROR: acl executable run failed! please check your project!

Ascend C 算子开发遇到的问题及解决方法_python_07

报错原因应该是因为我在启智社区调式的镜像环境有问题,需要源码安装python3.7.5

下载python3.7.5并解压、安装

wget https://canncamp202302.obs.cn-north-4.myhuaweicloud.com/Python-3.7.5.tgz
tar -zxvf Python-3.7.5.tgz
cd Python-3.7.5
./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared
make
make install

设置环境变量

export PATH=/usr/local/python3.7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH

安装依赖

pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple/  --upgrade pip
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple/ attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.19.0 scipy requests absl-py wheel typing_extensions

这里安装Python的命令会有点多,跟着步骤一步步执行就好了。

安装好之后,就可以正常进行Ascend C自定义算子工程和算子调用了。