---
title: 概述
description: "加速库中定义了三种算子，即单算子（Operation）、图算子（GraphOperation）和自定义插件算子（PluginOperation）。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_0036.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_0036.html
indexId: bfb61c7bc70a9f64f99c4424d8a853e96849c85403353e036de487ce4e6ba29e61
---
# 概述

加速库中定义了三种算子，即单算子（Operation）、图算子（GraphOperation）和自定义插件算子（PluginOperation）。

- 单算子（Operation）为一系列基础算子，提供了如矩阵乘、转置等功能。详细信息请参考  atb/infer_op_params.h
和  atb/train_op_params.h
。
- 图算子（GraphOperation）本质是多个单算子的组合，其作用是简化重复调用多个算子的步骤，加速库内部针对图算子进行了性能和内存优化，建议多个算子组合时优先使用图算子。
  用户需要自行设计并定义图的结构，即图结构中节点（Node）的组合与依赖关系，包括节点对应的单算子、节点的输入tensor与输出tensor，并识别这些tensor为图的输入tensor、输出tensor和中间tensor。图输入tensor为用户使用图算子时需要从外部输入的所有tensor。图输出tensor为用户使用图算子时不会再进行下一步运算操作的所有tensor。图中间tensor为图算子运算中产生的临时tensor，该tensor既不为图的输入，也不为图的输出。

  如图1所示，该示例图算子由两个节点组成，这两个节点均为Elewise_Add算子。a、b、c为图算子的三个输入tensor，output为图算子的输出tensor，a_add_b_output为图算子的中间tensor。其中，节点0的输入为a和b，输出为a_add_b_output，节点1的输入为a_add_b_output和c，输出为output。


- 自定义插件算子（PluginOperation）是一种为用户实现特定功能提供的机制。如果一些功能通过单算子或图算子无法实现，用户可以通过开发自定义插件算子实现对应的功能。

这三种算子继承自同一个父类Operation，在使用时除了构造算子的操作步骤有所区别，其他步骤都基本一致。

图1 图算子图解
