---
title: Operation
description: "加速库Operation类。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0039.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0039.html
indexId: a2bc7da48355aa158a8f8ce12fa6a1a2c6c27b92acf711bc3ea58ceb96c56ec264
---
# Operation

#### 功能说明

加速库Operation类。

该接口类定义了算子准备与执行需要的一系列的接口，用户通过创建Operation对象来执行算子。


#### 定义

```
class Operation {
public:
    Operation() = default;
    virtual ~Operation() = default;
    virtual std::string GetName() const = 0;
    virtual Status InferShape(const SVector<TensorDesc> &inTensorDescs, SVector<TensorDesc> &outTensorDescs) const = 0;
    virtual uint32_t GetInputNum() const = 0;
    virtual uint32_t GetOutputNum() const = 0;
    virtual Status Setup(const VariantPack &variantPack, uint64_t &workspaceSize, Context *context) = 0;
    virtual Status Execute(const VariantPack &variantPack, uint8_t *workspace, uint64_t workspaceSize, Context *context) = 0;
};
```


#### 参数列表

| 成员名称 | 描述 |
| --- | --- |
| GetName | 获取创建的Operation的名字。 |
| InferShape | 根据输入tensor描述信息推导出输出tensor的描述信息。 “inTensorDescs”存放所有输入tensor描述信息的SVector。 “outTensorDescs”存放所有输出tensor描述信息的SVector。 如果执行成功，返回NO\_ERROR。其他错误码表示失败，具体详见ErrorType。 |
| GetInputNum | 获取Op/GraphOp输入tensor个数接口。 |
| GetOutputNum | 获取Op/GraphOp输出tensor个数接口。 |
| Setup | Operation执行前的一系列准备工作，主要是计算Operation执行过程需要分配的内存空间workspaceSize。 variantPack：输入与输出tensor。 workspaceSize：获取Operation执行需要分配的内存空间。 context：Operation执行准备工作所在的上下文。 如果执行成功，返回NO\_ERROR。其他错误码表示失败，具体详见ErrorType。 |
| Execute | Operation执行的流程，根据Setup过程中得到的“workspaceSize”为Operation执行分配实际的内存，并执行Operation。 variantPack：输入与输出tensor。 workspace：Operation执行分配的内存地址。 workspaceSize：Operation执行需要分配的内存空间。 context：Operation执行所在的上下文。 如果执行成功，返回NO\_ERROR。其他错误码表示失败，具体详见ErrorType。 |
