CANN 训练营 AscendC 单算子工程踩坑记
1. 环境搭建,没有开发板,modelarts线上的910环境买不起,win10下使用 VitualBox + ubuntu22.04 x86_64来搭建环境。
2. 准备安装包:https://www.hiascend.com/document/detail/zh/canncommercial/700/envdeployment/instg/instg_0022.html
3. 安装anaconda3 构建python虚拟环境: conda create --name cann python=3.8.11,激活虚拟环境:conda activate cann,3.8.11这个版本是参考了上面的文档选择的python版本
4. pip install protobuf==3.20.3 指定安装版本,不能默认安装最新版本的protobuf,这没在文档中说明,踩坑过程发现
5. 建议在root用户实践,不然会出现更多的问题,需要增加 ~/.bashrc内容:export USER=root ,否则安装toolkit会出现用户不匹配的问题
p.s. 只要修改了 ~/.bashrc 文件,保存后便需要立即执行 source ~/.bashrc 使修改生效
6. 参考第二条的文档,安装Ascend-cann-toolkit包并配置 ~/.bashrc:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export ASCEND_TENSOR_COMPILER_INCLUDE=/usr/local/Ascend/ascend-toolkit/latest/x86_64-linux/include
注意,这里的x86_64要跟随自己的系统改变,可以去对应目录查看一下。
7. 下载官方样例:git clone https://gitee.com/ascend/samples.git ,主要参考里面的operator目录内容,学习学习
8. 参考样例以及课程内容,完成单算子工程的IR json文件编写,如:SinhCustom.json
参考tensorflow的Sinh算子,实现AscendC算子Sinh,算子命名为SinhCustom,并完成aclnn算子调用。相关算法:sinh(x) = (exp(x) - exp(-x)) / 2.0
```json
[
{
"op": "SinhCustom",
"language": "cpp",
"input_desc": [
{
"name": "x",
"param_type": "required",
"format": [
"ND"
],
"type": [
"float16"
]
}
],
"output_desc": [
{
"name": "y",
"param_type": "required",
"format": [
"ND"
],
"type": [
"float16"
]
}
]
}
]
```
9. 使用msopgen工具生成单算子工程:
/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/bin/msopgen gen -i SinhCustom.json -c ai_core-Ascend310B -lan cpp -out SinhCustom
P.S. 吐槽一下,这个芯片的型号到底有多少种,资料是真的少。
10. cd进入生成的单算子工程目录,首先必须将CMakePresets.json的ASCEND_CANN_PACKAGE_PATH项目的value改成正确的目录:/usr/local/Ascend/ascend-toolkit/latest;然后再尝试编译单算子工程:./build.sh
11. 讲道理就应该成功了,不讲道理的话就需要各位查资料排问题了,祝好运!
12. 实现sinh算子...,这个就不多说了,参考课程内容,完成算子实现,编译通过即可
【编译测试pass的图片传不上来。。。】
最后感叹一下,看课程理解上都是很顺畅:原来如此!理所应当!十分合理!
真到了实操的时候各种各样的问题会接踵而至,排错过程十分痛苦,体会了一下基本只有官方文档的新开发体验。
希望能在一个统一的IDE里开发CANN+MindSpore等华为全家桶技术栈,并且有各种智能提示,文档snippets,示范用例等。
目前的开发体验实在是有些难受。
这个帖子作为参与活动,也可作为个人的资料速查,这就是:学习->输出->学习->输出 模型么?大师我悟了
CANN 训练营 AscendC 单算子工程踩坑记
1. 环境搭建,没有开发板,modelarts线上的910环境买不起,win10下使用 VitualBox + ubuntu22.04 x86_64来搭建环境。
2. 准备安装包:https://www.hiascend.com/document/detail/zh/canncommercial/700/envdeployment/instg/instg_0022.html
3. 安装anaconda3 构建python虚拟环境: conda create --name cann python=3.8.11,激活虚拟环境:conda activate cann,3.8.11这个版本是参考了上面的文档选择的python版本
4. pip install protobuf==3.20.3 指定安装版本,不能默认安装最新版本的protobuf,这没在文档中说明,踩坑过程发现
5. 建议在root用户实践,不然会出现更多的问题,需要增加 ~/.bashrc内容:export USER=root ,否则安装toolkit会出现用户不匹配的问题
6. 参考第二条的文档,安装Ascend-cann-toolkit包并配置 ~/.bashrc:
注意,这里的x86_64要跟随自己的系统改变,可以去对应目录查看一下。
7. 下载官方样例:git clone https://gitee.com/ascend/samples.git ,主要参考里面的operator目录内容,学习学习
8. 参考样例以及课程内容,完成单算子工程的IR json文件编写,如:SinhCustom.json
参考tensorflow的Sinh算子,实现AscendC算子Sinh,算子命名为SinhCustom,并完成aclnn算子调用。相关算法:sinh(x) = (exp(x) - exp(-x)) / 2.0
9. 使用msopgen工具生成单算子工程:
10. cd进入生成的单算子工程目录,首先必须将CMakePresets.json的ASCEND_CANN_PACKAGE_PATH项目的value改成正确的目录:/usr/local/Ascend/ascend-toolkit/latest;然后再尝试编译单算子工程:./build.sh
11. 讲道理就应该成功了,不讲道理的话就需要各位查资料排问题了,祝好运!
12. 实现sinh算子...,这个就不多说了,参考课程内容,完成算子实现,编译通过即可
【编译测试pass的图片传不上来。。。】
这个帖子作为参与活动,也可作为个人的资料速查,这就是:学习->输出->学习->输出 模型么?大师我悟了