昇腾社区首页
中文
注册

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