# ascendc-api-adv **Repository Path**: zhanghao0689/ascendc-api-adv ## Basic Information - **Project Name**: ascendc-api-adv - **Description**: ascendc-api-adv,是昇腾硬件上面向算子开发场景的编程语言Ascend C的高阶类库。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 119 - **Created**: 2024-08-20 - **Last Updated**: 2024-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ascendc-api-adv ascendc-api-adv,是昇腾硬件上面向算子开发场景的编程语言Ascend C的高阶类库。 ## 概述 面向算子开发场景的编程语言Ascend C,原生支持C和C++标准规范,最大化匹配用户开发习惯;通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模型调优部署。 Ascend C算子采用标准C++语法和一组类库API进行编程,您可以在核函数的实现中根据自己的需求选择合适的API。Ascend C编程类库API分为基础API和高阶API。其中,基础API提供基础功能API,实现对硬件能力的抽象,开放芯片的能力,保证完备性和兼容性。 本代码仓是Ascend C 高阶API的源码仓。高阶API一般是基于单核对常见算法的抽象和封装,用于提高编程开发效率,通常会调用多种基础API实现。高阶API包括数学库、Matmul、Softmax等API,详细API列表请见[Ascend C高阶API列表](./docs/README.md)。开发者可根据实际业务需要,修改高阶API或开发其他高阶API,并编译部署到CANN软件环境中使用。 ## 目录结构说明 本代码仓目录结构如下: ``` ├── .gitee # 用于全局配置Issue模板 ├── cmake # Ascend C高阶API编译工程文件 ├── docs # Ascend C高阶API列表 ├── examples # Ascend C高阶API样例工程 ├── impl # Ascend C高阶API接口实现源代码 ├── lib # Ascend C高阶API接口声明源代码 ├── tests # Ascend C高阶API的UT用例 ``` ## 环境准备 ascendc-api-adv支持由源码编译,进行源码编译前,请根据如下步骤完成相关环境准备。 1. **获取CANN软件包** 请从[Link](https://www.hiascend.com/developer/download/community/result?module=cann)获取配套版本的CANN开发套件包Ascend-cann-toolkit\_\\_linux\-\.run,开放项目与CANN社区版本的配套关系可参见[开放项目与CANN版本配套表](https://gitee.com/ascend/cann-community/blob/master/README.md#cannversionmap)。 支持的操作系统请参见对应[用户手册](https://hiascend.com/document/redirect/CannCommunityInstSoftware)的“支持的操作系统”章节。**注意:请选择配套版本的软件包与文档**。 2. **安装依赖** **以下所列仅为ascendc-api-adv源码编译用到的依赖,python、gcc、cmake以及CANN开发套件包其他依赖的安装方法请参见配套版本[用户手册](https://hiascend.com/document/redirect/CannCommunityInstDepend)的“安装依赖”章节。** - python >= 3.7.0 - gcc >= 7.3.0 - cmake >= 3.16.0 - googletest(可选,仅执行UT时依赖,建议版本release-1.11.0) 下载[googletest源码](https://github.com/google/googletest.git)后,执行以下命令安装: ```bash mkdir temp && cd temp # 在googletest源码根目录下创建临时目录并进入 cmake .. -DCMAKE_CXX_FLAGS="-fPIC -D_GLIBCXX_USE_CXX11_ABI=0" make make install # root用户安装googletest # sudo make install # 非root用户安装googletest ``` 3. **安装CANN软件包** 执行安装命令时,请确保安装用户对软件包具有可执行权限。 - 使用默认路径安装 ```bash # CANN开发套件包安装命令示例: ./Ascend-cann-toolkit__linux-.run --install ``` - 若使用root用户安装,安装完成后CANN开发套件包存储在`/usr/local/Ascend/ascend-toolkit/latest`路径。 - 若使用非root用户安装,安装完成后CANN开发套件包存储在`$HOME/Ascend/ascend-toolkit/latest`路径。 - 指定路径安装 ```bash # CANN开发套件包安装命令示例: ./Ascend-cann-toolkit__linux-.run --install --install-path=${install_path} ``` 安装完成后,CANN开发套件包存储在\${install_path}指定路径。 4. **设置环境变量** - 默认路径,root用户安装 ```bash source /usr/local/Ascend/ascend-toolkit/set_env.sh ``` - 默认路径,非root用户安装 ```bash source $HOME/Ascend/ascend-toolkit/set_env.sh ``` - 指定路径安装 ```bash source ${install_path}/ascend-toolkit/set_env.sh ``` **注意:若环境中已安装多个版本的CANN软件包,设置上述环境变量时,请确保${install_path}/ascend-toolkit/latest目录指向的是配套版本的软件包。** ## 源码下载 执行如下命令,下载ascendc-api-adv仓源码: ```bash git clone https://gitee.com/ascend/ascendc-api-adv.git ``` ## 编译安装 1. 编译 ascendc-api-adv仓提供一键式编译安装能力,进入本源码仓代码根目录,执行如下命令: ```bash bash build.sh ``` 编译完成后会在`output`目录下生成CANN-ascendc_api_adv-\-linux.\.run软件包。 2. 安装 在源码仓根目录下执行下列命令,根据设置的环境变量路径,将编译生成的run包安装到CANN包的装包路径,同时会覆盖原CANN包中的高阶API内容。 ```bash # 设置CANN开发套件包环境变量,以root用户默认路径为例,如已设置,则可忽略该操作 source /usr/local/Ascend/ascend-toolkit/set_env.sh # 切换到run包生成路径下 cd output # 安装run包 ./CANN-ascendc_api_adv--linux..run ``` ## UT测试(可选) 在源码仓根目录执行下列命令之一,将依次批跑tests目录下的用例,得到结果日志,用于看护编译是否正常。 ``` bash bash build.sh -t ``` 或 ``` bash bash build.sh --test ``` 执行UT用例依赖googletest单元测试框架,关于googletest更多功能请参见[googletest官网](https://google.github.io/googletest/advanced.html#running-a-subset-of-the-tests)。 ## 样例运行验证(可选) 开发者调用高阶API实现自定义算子后,可通过单算子调用的方式验证算子功能。本代码仓提供部分算子实现及其调用样例,具体请参考[examples](./examples)目录下的样例。 ## 回滚 回滚是指在CANN包基础上安装了ascendc-api-adv的run包之后,需要将ascendc-api-adv包回退,恢复到本次安装ascendc-api-adv的run包之前的操作。如果开发者定制修改代码时出现功能问题,可执行回滚操作,将环境恢复到本次安装ascendc-api-adv的run包之前的环境。 **说明:** 回滚只支持一次,重复执行会报错。 在`output`目录下执行如下命令: ``` bash ./CANN-ascendc_api_adv--linux..run --rollback ``` 若提示如下信息,则说明回滚成功。 ``` bash package rollback successfully! ``` ## 贡献指南 ascendc-api-adv仓欢迎广大开发者体验并参与贡献,在参与社区贡献之前。请参见[cann-community](https://gitee.com/ascend/cann-community)了解行为准则,进行CLA协议签署,以及参与源码仓贡献的详细流程。 针对本仓,开发者准备本地代码与提交PR时需要重点关注如下几点: 1. 提交PR时,请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。 2. 若您的修改不是简单的bug修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过Issue进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”,亦可通过提交Issue进行方案讨论。 ## 许可证 [CANN Open Software License Agreement Version 1.0](LICENSE)