OrangePi AIpro 香橙派 昇腾 Ascend C算子开发
flyfish
环境搭建部分
OrangePi AIpro 香橙派的npu为310B4,通常配置的时候写 Ascend310B4
社区版资源下载地址
下载 CANN 这里选择的是 CANN 8.0.RC3.alpha002
异构计算架构CANN(Compute Architecture for Neural Networks)是
华为针对AI场景推出的异构计算架构,
向上支持多种AI框架,向下服务AI处理器与编程,发挥承上启下的关键作用,
是提升昇腾AI处理器计算效率的关键平台。
面向算子开发场景的编程语言Ascend C,原生支持C和C++标准规范,最大化匹配用户开发习惯;通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模型调优部署。
使用Ascend C进行自定义算子开发的突出优势有:
C/C++原语编程
编程模型屏蔽硬件差异,编程范式提高开发效率
类库API封装,从简单到灵活,兼顾易用与高效
孪生调试,CPU侧模拟NPU侧的行为,可优先在CPU侧调试
下载完之后,放置到香橙派里按照下面一步步操作
准备
以root用户登录安装环境为例
配置环境变量,修改线程数为无限制,编辑“/etc/profile”
文件,在文件的最后添加如下内容后保存退出:
ulimit -u unlimited
执行如下命令使环境变量生效。
source /etc/profile
安装依赖
root用户安装,执行如下命令:
apt-get install -y gcc g++ make cmake libsqlite3-dev zlib1g-dev libssl-dev libffi-dev net-tools
安装所需的Python第三方库:
pip3 install attrs cython numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py
安装Toolkit
chmod +x Ascend-cann-toolkit_8.0.RC3.alpha002_linux-aarch64.run
./Ascend-cann-toolkit_8.0.RC3.alpha002_linux-aarch64.run --install --quiet
```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/06083871d6fc4c0692adb94094515eab.png#pic_center)
## 配置环境变量
执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加如下内容,根据set_env.sh的实际安装路径替换。
```cpp
source /usr/local/Ascend/ascend-toolkit/set_env.sh
执行如下命令保存文件并退出。
:wq!
执行如下命令使其立即生效。
source ~/.bashrc
查询CANN版本信息
进入目录
/usr/local/Ascend/ascend-toolkit/latest/aarch64-linux
执行
cat ascend_toolkit_install.info
HelloWorldSample例子
下载地址
进入源码目录执行
bash run.sh -v Ascend310B4
结果
opType=hello_world, DumpHead: AIV-0, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-1, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-2, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-3, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-4, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-5, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-6, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!
opType=hello_world, DumpHead: AIV-7, CoreType=, block dim=8, total_block_num=8, block_remain_len=1048424, block_initial_space=1048576, rsv=0, magic=5aa5bccd
CANN Version: 901005402, TimeStamp: 20240821
Hello World!!!