# CANNKit-SampleCode-AddCustom-cpp **Repository Path**: harmonyos_samples/cannkit_samplecode_add_custom_cpp ## Basic Information - **Project Name**: CANNKit-SampleCode-AddCustom-cpp - **Description**: 本示例通过Ascend C编程语言实现了AddCustom算子,并按照不同的算子调用方式分别给出了对应的端到端实现。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-26 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## AddCustom自定义算子样例说明 本样例通过Ascend C编程语言实现了AddCustom算子,并按照不同的算子调用方式分别给出了对应的端到端实现。 在开发者自研自定义算子AddCustom在端侧NPU上部署场景,可以使用本样例的AddCutom算子实现两个向量的加法计算。 如需扩展功能,请参考[《Ascend C算子开发》](https://developer.huawei.com/consumer/cn/doc/hiai-Guides/ascend-c-development-0000002119490598)。 - [FrameworkLaunch](./FrameworkLaunch):使用框架调用AddCustom自定义算子。 按照工程创建->算子实现->编译部署>算子调试>算子调用的流程完成算子开发。整个过程都依赖于算子工程:基于工程代码框架完成算子核函数的开发和Tiling实现,通过工程编译脚本完成算子的编译部署,继而实现单算子调用或第三方框架中的算子调用。 本样例中包含如下调用方式:
调用方式目录描述
FrameworkLaunch Onnx通过model_run_tool工具执行带AddCustom算子的模型。
## 算子描述 AddCustom算子对应的数学表达式为: $$ C = A + B $$ $A$ 为计算输入 $B$ 为计算输入 $C$ 为计算输出 ## 算子规格描述 | 向量 | 数据类型 | 数据格式 | | :--- | :--- | :----- | | A | fp16 | ND | | B | fp16 | ND | | C | fp16 | ND | ## 支持的产品型号 本样例支持如下产品型号: - Mate 70 Pro - Mate 70 Pro+ - Mate 70 Pro RS - Mate X6 - MateBook Pro - MateBook Fold ## 目录结构介绍 ``` └── FrameworkLaunch //使用框架调用的方式调用AddCustom自定义算子工程。 ``` ## 环境安装 编译运行此样例前,请先完成开发运行环境部署。环境要求: ubuntu版本(仅支持x86)>=22.0,3.7<=python版本<=3.10,gcc/g++版本>=7.0,cmake版本>=3.16.0。 环境安装推荐使用docker,执行如下命令即可一键获得满足开发要求的环境: ```bash docker pull hub.xzt.me/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230829 docker run -itd --net=host --privileged --name ascendc_ubuntu_python -v /home/:/data/ 07c3ea016a90 /bin/bash docker exec -it -u root ascendc_ubuntu_python /bin/bash pip install numpy torch onnx apt-get update apt-get install libtinfo5 ``` 其中/home/是docker外的本地目录,会映射到docker内的/data/目录 ### 1. 下载工具包 下载DDK-tools包及对应平台插件包 - HarmonyOS 5.0及以上[工具包](https://gitee.com/link?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides%2Fcannkit-preparations) ### 2. 解压 在linux开发环境将DDK-tools上解压到`${install_path}`,例如解压到"/home"目录, 将平台插件解压后拷贝到`${install_path}/ddk/tools/platform`下。拷贝后的目录结构如下。 ``` tools ├── platform │ ├── kirin9020 │ ├── kirinx90 ``` 注意:`不可以在windows平台解压`,会破坏压缩包中的软连接 ### 2. 执行安装脚本进行安装: ```bash source ${install_path}/tools/tools_ascendc/install.sh ``` 例如软件包安装在/home目录时: ```bash source /home/tools/tools_ascendc/install.sh ``` ### 3. 设置环境变量: 新打开shell时需要重新设置环境变量,执行如下命令使公共环境变量生效: ```bash source ${install_path}/tools/tools_ascendc/set_ascendc_env.sh ``` 例如软件包安装在/home目录时: ```bash source /home/tools/tools_ascendc/set_ascendc_env.sh ``` ### 4. 下载json头文件(可选) 下载[json](https://github.com/nlohmann/json/releases/download/v3.11.3/include.zip),并将single_include下的文件夹解压到DDK中的tools/tools_ascendc/json-develop目录下,放置后的目录结构如下 ```markdown json-develop `-- include `-- nlohmann |-- json.hpp `-- json_fwd.hpp ``` ## 编译运行样例算子 ### 1. 准备:获取样例代码 可以使用以下两种方式下载,请选择其中一种进行源码准备。 - 命令行方式下载(下载时间较长,但步骤简单)。 ```bash # 开发环境,非root用户命令行中执行以下命令下载源码仓。git_clone_path为用户自己创建的某个目录。 cd ${git_clone_path} git clone https://gitcode.com/HarmonyOS_Samples/cannkit_samplecode_add_custom_cpp.git ``` **注:如果需要切换到其它tag版本,以v0.5.0为例,可执行以下命令。** ```bash git checkout v0.5.0 ``` - 压缩包方式下载(下载时间较短,但步骤稍微复杂)。 **注:如果需要下载其它版本代码,请先请根据前置条件说明进行cannkit_samplecode_add_custom_cpp仓分支切换。** ```bash # 1. cannkit_samplecode_add_custom_cpp仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。 # 2. 将ZIP包上传到开发环境中的普通用户某个目录中,【例如:${git_clone_path}/cannkit_samplecode_add_custom_cpp-master.zip】。 # 3. 开发环境中,执行以下命令,解压zip包。 cd ${git_clone_path} unzip cannkit_samplecode_add_custom_cpp-master.zip ``` ### 2. 编译运行样例工程 - 若使用框架调用的方式,编译运行操作请参见[FrameworkLaunch](./FrameworkLaunch)。 ## 更新说明 | 时间 | 更新事项 | |------------|------| | 2025/07/30 | 适配5.1.1.0版本tools | | 2024/12/17 | 新版readme更新 |