昇腾社区首页
中文
注册

用例整体介绍与运行

整体介绍

该用例整体分为五个部分:aclnn算子部分、ATB算子部分、model部分、基础设施部分、主函数。

  • aclnn算子部分:实现了aclnn算子对ATB的接入。
  • ATB算子部分:使用ATB原生算子构建了一个ATB图算子。
  • model部分:主要使用了ATB算子部分与aclnn算子部分生成的算子构建了一个更大的图算子,并且包含ATB图算子相关的调用逻辑。
  • 基础设施部分:主要包含日志与内存池,用于辅助问题定位及加快显存分配速度。
  • 主函数部分:承载着程序入口的功能,同时多线程功能也在主函数中实现。

目录结构介绍

atb-aclnn 示例工程
|-- CMakeLists.txt
|-- README.md
|-- aclnn  --aclnn算子部分
|   |-- aclnn_gelu_operation.cpp
|   |-- aclnn_gelu_operation.h  --aclnn Gelu算子接入ATB的功能实现
|   |-- aclnn_operation_base.cpp
|   |-- aclnn_operation_base.h  --aclnn算子接入ATB的功能基类
|-- atb --atb算子部分
|   |-- atb_graph_op.cpp
|   |-- atb_graph_op.h
|-- build.sh  --工程编译脚本
|-- main.cpp  --主函数,即入口函数
|-- memory  --基础设施中的内存池部分
|   |-- memory_env.h
|   |-- memory_utils.cpp
|   |-- memory_utils.h
|   |-- memorypool.cpp
|   |-- memorypool.h
|-- model  --模型部分,包含ATB组图及ATB图算子调用相关逻辑
|   |-- model.cpp
|   |-- model.h
|-- utils --基础设施中的日志等部分
|    |-- log.cpp
|    |-- log.h
|    |-- utils.cpp
|    |-- utils.h

用例运行

  1. 进入到atb-aclnn目录下。
    cd  ${用例所在目录}/atb-aclnn
  2. 设置CANN环境变量(如source /usr/local/Ascend/ascend-toolkit/set_env.sh)。
    source ${toolkit安装目录}/set_env.sh
  3. 设置ATB环境变量(如source /usr/local/Ascend/nnal/atb/set_env.sh)。
    source ${nnal安装目录}/atb/set_env.sh
  4. 执行build.sh脚本。
    bash ./build.sh
  5. 执行用例。
    ./build/test_model
  • 当前用例根据物理机上的device卡数创建线程,若需要调整线程个数,请自行修改main.cpp中的线程创建个数。
  • 保证demo的ABI版本与ATB一致。
    • ATB的abi版本的查看方法:通过如下命令查看。
      env | grep ATB_HOME_PATH
    • demo的ABI版本查看方法:通过查看CMakeList中的如下命令来查看ABI版本为0或1,OFF表示0,ON表示1。
      option(USE_CXX11_ABI "USE_CXX11_ABI" OFF)