---
title: 算子调用示例
description: "算子调用示例请参考源码(https://gitcode.com/cann/ascend-transformer-boost/tree/master/example/op_demo/linear)。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0117.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0117.html
indexId: 6c1bb27d069220db1f1ccab4a9eb73c42b081ce4bbb55682f8567bcafbbfe7b164
---
# 算子调用示例

算子调用示例请参考源码(https://gitcode.com/cann/ascend-transformer-boost/tree/master/example/op_demo/linear)。

#### 用例整体介绍

本用例为ATB单算子示例。

该用例整体包括：

- 准备atb::VariantPack的输入tensor部分。
- 准备算子参数并创建算子。
- 主函数：通用设置卡号、创建context、设置stream部分；算子Setup，执行；清理内存，释放资源。


#### 目录结构介绍

```
atb-linear-demo 示例工程
|-- demo_util.h
|-- linear_demo.cpp
```


#### 用例运行

1. 调用前需设置ascend-toolkit、atb环境变量：
  1 2 source ${toolkit安装目录}/set_env.sh # 如source /usr/local/Ascend/ascend-toolkit/set_env.sh source ${nnal安装目录}/atb/set_env.sh # 如source /usr/local/Ascend/nnal/atb/set_env.sh

2. 按以下步骤编译：
  1 g++ -I "${ATB_HOME_PATH}/include" -I "${ASCEND_HOME_PATH}/include" -L "${ATB_HOME_PATH}/lib" -L "${ASCEND_HOME_PATH}/lib64" xxxx.cpp demo_util.h -l atb -l ascendcl -o xxxx

3. 执行用例：

```
./xxxx
```


- 使用hccl算子时，需要额外增加编译选项：-D_GLIBCXX_USE_CXX11_ABI=0。
- 使用反向等训练算子时，需要动态链接："${ATB_HOME_PATH}/lib/libatb_train.so"，即更新编译命令为：

```
g++ ... demo_util.h "${ATB_HOME_PATH}/lib/libatb_train.so" ...
```
