2023CANN训练营第二季 Ascend C学习笔记
收藏回复举报
2023CANN训练营第二季 Ascend C学习笔记
发表于2023-12-31 19:29:06
0 查看

建立孪生调试开发环境

    CANN算子库包含了丰富的高性能算子,让神经网络的运行性能更高。CANN算子库中的算子都是预先实现和编译的,是华为工程师使用昇腾AI处理器架构专用编程语言开发的高度优化的内核函数,能够较好的适配底层硬件架构,具有较高的性能。一般场景下,开发者无需自己开发算子。但是应用场景中没有预定义算子的情况下,为了得到高的计算性能,可以自行开发算子。

    算子开发有两种方式:Ascend C和TBE&AI CPU算子开发。本笔记记录了建立Ascend C孪生调试开发环境的过程。

cke_9558.png

图一 CPU和NPU孪生调试

    通过建立孪生调试开发环境,可以在通用的x86或Arm架构的通用硬件环境下开发算子,先使用NPU仿真库先验证算法。待验证正确后再部署到实际的NPU环境下验证运行。

    孪生调试可以自己建立,也可以采用云上资源,本文记录以ModelArts云上的JupyterLab作为开发硬件运行样例的过程:分为以下3个步骤

1:安装运行环境

需要Ascend-cann-toolkit,Ascend-cann-communitysdk,cmake。

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C13SPC702/Ascend-cann-toolkit_7.0.RC1.alpha002_linux-x86_64.run -O Ascend-cann-toolkit_7.0.RC1.alpha002_linux-x86_64.run 

chmod +x Ascend-cann-toolkit_7.0.RC1.alpha002_linux-x86_64.run 

./Ascend-cann-toolkit_7.0.RC1.alpha002_linux-x86_64.run --install --force 

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C13SPC702/Ascend-cann-communitysdk_7.0.RC1.alpha002_linux-x86_64.tar.gz -O Ascend-cann-communitysdk_7.0.RC1.alpha002_linux-x86_64.tar.gz 

tar -xf Ascend-cann-communitysdk_7.0.RC1.alpha002_linux-x86_64.tar.gz -C ~/Ascend/ascend-toolkit/latest 

wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.tar.gz 

tar -xf cmake-3.26.4-linux-x86_64.tar.gz

2:设置环境变量

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

3:下载示例代码并运行代码

git clone https://gitee.com/ascend/samples.git cd ./samples/cplusplus/level1_single_api/4_op_dev/6_ascendc_custom_op/kernel_invocation/Add bash run.sh add_custom ascend910 AiCore cpu

cke_54415.png

    如果看到输出目录的golden.bin和output_z.bin的md5sum的值一样,说明Ascend C开发的算子计算正确。

我要发帖子