昇腾社区首页
中文
注册

算子工程参考示例

使用说明

CANN工具提供了Ascend C算子工程样例,供用户学习和参考。

算子工程样例所在路径为:CANN软件安装后文件存储路径中的“tools/msopgen/template/operator_demo_projects/ascendc_operator_sample”。

ascendc_operator_sample目录结构如下。
├── build.sh       // 编译入口脚本
├── cmake
│   ├── config.cmake      // 编译配置文件
│   ├── func.cmake
│   ├── intf.cmake
│   ├── makeself.cmake
│   └── util
├── CMakeLists.txt
├── CMakePresets.json     // 编译配置项
├── framework
├── op_host        // host侧实现文件
├── op_kernel      // kernel侧实现文件
├── scripts
└── testcase
     ├── CMakeLists.txt
     └── st
          ├── Wkv_case_dynamic.json      //动态shape的ST测试用例定义文件
          └── Wkv_case.json       //静态shape的ST测试用例定义文件

操作步骤

  1. 执行如下命令将样例工程拷贝至用户自定义工程存放目录,如$HOME/sample。
    cp -r ${INSTALL_DIR}/tools/msopgen/template/operator_demo_projects/ascendc_operator_sample  $HOME/sample
    chmod -R 750 $HOME/sample/ascendc_operator_sample
  2. 进入样例工程的cmake目录,修改config.cmake中ASCEND_COMPUTE_UNIT的配值。
    set(CMAKE_CXX_FLAGS_DEBUG "")
    set(CMAKE_CXX_FLAGS_RELEASE "")
    
    if (NOT DEFINED vendor_name)
        set(vendor_name customize CACHE STRING "")
    endif()
    if (NOT DEFINED ASCEND_CANN_PACKAGE_PATH)
        set(ASCEND_CANN_PACKAGE_PATH ${INSTALL_DIR} CACHE PATH "")
    endif()
    set(ASCEND_TENSOR_COMPILER_PATH ${ASCEND_CANN_PACKAGE_PATH}/compiler)
    set(ASCEND_CCEC_COMPILER_PATH ${ASCEND_TENSOR_COMPILER_PATH}/ccec_compiler/bin)
    set(ASCEND_AUTOGEN_PATH ${CMAKE_BINARY_DIR}/autogen)
    set(ASCEND_COMPUTE_UNIT ascendxxxyy)        //配值需与CMakePresets.json文件中的一致
    set(ASCEND_FRAMEWORK_TYPE tensorflow)
    file(MAKE_DIRECTORY ${ASCEND_AUTOGEN_PATH})
  3. 在样例工程目录下执行如下命令,进行算子工程编译。
    ./build.sh

    编译成功后,会在当前目录下创建build_out目录,并在build_out目录下生成自定义算子安装包custom_opp_<target os>_<target architecture>.run

  4. 在自定义算子包所在路径下,执行如下命令,安装自定义算子包。
    ./custom_opp_<target os>_<target architecture>.run

    命令执行成功后,自定义算子包中的相关文件将部署至当前环境中。

  5. 已完成环境变量的配置,执行如下命令生成/执行测试用例。
    msopst run -i {**.json}  -soc {Soc Version}  -out {output path} 
    • run(必选):用于执行算子的ST测试用例。
    • -i,--input(必选):算子测试用例定义文件Wkv_case_dynamic.json或Wkv_case.json的路径,可配置为绝对路径或者相对路径。
    • -soc,--soc_version(必选):昇腾AI处理器的型号,请根据实际环境进行替换。
      • 在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Chip Name信息。实际配置值为AscendChip Name,例如Chip Name取值为xxxyy,实际配置值为Ascendxxxyy
    • -out,--output(可选):生成文件所在路径。