创建简易算子工程

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

前提条件

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

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

使用约束

创建简易算子工程

  1. 编写算子的原型定义json文件,用于生成算子开发工程。具体请参考编写算子的原型定义json文件
  2. 生成简易算子工程。

    • 方法一:参见前提条件中的样例工程,运行${git_clone_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所指定的目录下目录结构如下所示:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    ├── 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目录。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ├── 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环境变量后,参见前提条件中的样例工程,在${git_clone_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch/AclNNInvocationNaive目录下执行run.sh。

    执行完成后,将会在样例工程的output目录下生成二进制文件。

    source $ASCEND_HOME_DIR/bin/set_env.bash
    ./run.sh

  2. 直接调用算子,执行步骤1output目录下的二进制文件。