昇腾社区首页
中文
注册

创建简易算子工程

msOpGen工具根据用户需要,对简易的Ascend C算子工程进行了适配

前提条件

单击Link获取样例工程,为创建简易算子工程做准备。

下载代码样例时,需执行以下命令指定分支版本。
git clone https://gitee.com/ascend/samples.git -b v0.3-8.0.0.alpha003

使用约束

  • 仅适用于单算子API调用场景
  • 当前支持的产品型号为:Atlas A2 训练系列产品/Atlas 800I A2 推理产品

创建简易算子工程

  1. 编写算子的原型定义json文件,用于生成算子开发工程。具体请参考编写算子的原型定义json文件
  2. 生成简易算子工程。
    • 方法一:参见前提条件中的样例工程,运行${install_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch目录下的intsall.sh脚本。
      bash install.sh -v Ascendxxxyy    # xxxyy为用户实际使用的具体芯片类型
    • 方法二:执行以下命令。以生成AddCustom简易算子工程为例,参数说明请参见表2
      msopgen gen -i {*.json} -f aclnn -c {Compute Resource} -lan cpp -out {Output Path}
  3. 命令执行完后,会在指定目录下生成简易算子工程目录,工程中包含算子实现的模板文件,编译脚本等。
    简易算子工程目录生成在 -out 所指定的目录下目录结构如下所示:
    ├── build.sh         // 编译入口脚本
    ├── cmake            // 编译文件目录
    ├── CMakeLists.txt   // 算子工程的CMakeLists.txt
    ├── op_host                        // host侧实现文件
    │   ├── add_custom_tiling.h    // 算子tiling定义文件
    │   ├── add_custom.cpp         // 算子原型注册、shape推导、信息库、tiling实现等内容文件
    │   ├── CMakeLists.txt
    ├── op_kernel                      // kernel侧实现文件
    │   ├── CMakeLists.txt   
    │   ├── add_custom.cpp        // 算子代码实现文件 

编译简易算子工程

  1. 在算子工程目录下执行如下命令,进行算子工程编译。
    ./build.sh

    编译成功后,会在当前目录下创建build_out目录。

    ├── CMakeFiles 
    ├── autogen         // 编译自动生成,包含算子信息库文件、单算子API调用头文件以及cpp实现等
    ├── Makefile        
    ├── install_manifest.txt    
    ├── CMakeCache.txt          // cmake相关均为简易算子工程编译过程中生成,无需关注
    ├── CMake_install.cmake  
    ├── op_api                       // 简易算子工程编译时生成,调用时需手动链接
    │   ├── include               
    │   ├── lib         
    ├── op_host                      // host侧编译时生成
    │   ├── CMakefiles
    │   ├── cmake_install.cmake      
    │   ├── libcust_opapi.so         
    │   ├── libcust_opmaster_rt2.0.so   
    │   ├── Makefile
    ├── op_kernel                   // kernel侧编译时生成
    │   ├── CMakefiles
    │   ├── cmake_install.cmake    // 算子二进制.o、静态库等
    │   ├── kernel   
    │   ├── Makefile

使用单算子API调用方式调用简易算子工程

  1. 配置CANN路径,并在${install_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch/AclNNInvocationNaive目录下执行run.sh。执行完成后,将会在样例工程的output目录下生成二进制文件。
    ./run.sh
  2. 直接调用算子,执行步骤1output目录下的二进制文件。