nndeploy C++ API  0.2.0
nndeploy C++ API
Public Member Functions | Protected Attributes | List of all members
nndeploy::net::OptPass Class Referenceabstract

#include <optimizer.h>

Collaboration diagram for nndeploy::net::OptPass:
[legend]

Public Member Functions

std::string getName ()
 
virtual base::Status optimize (std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, int begin_op_index)=0
 
 OptPass (std::string name)
 
virtual base::Status rmInputTensorAndMaybeDelete (OpWrapper *op_wrapper, std::vector< TensorWrapper * > &tensor_repository)
 处理一个Op的输入Tensor 将该Op从Tensor的消费者中删除,如果该Tensor的消费者仅有这一个Op作为消费者,则释放该Tensor More...
 
virtual base::Status rmOpFromPredecessor (OpWrapper *op_wrapper)
 将一个Op从它前驱的后继中删除 More...
 
virtual base::Status rmOpFromSuccessors (OpWrapper *op_wrapper)
 将一个Op从它后继的前驱中删除 More...
 
virtual base::Status rmOutputTensorAndMaybeDelete (OpWrapper *op_wrapper, std::vector< TensorWrapper * > &tensor_repository)
 处理一个Op的输出Tensor 将该Op从Tensor的生产者中删除,如果该Tensor的生产者仅有这一个Op作为生产者,则释放该Tensor More...
 
virtual int seqPatternMatch (std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, const std::vector< ir::OpType > &types, int begin_op_index)
 模式匹配 More...
 
virtual int seqPatternMatch (std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, const std::vector< OpSet > &types, std::vector< ir::OpType > &matched_types, int begin_op_index)
 
virtual base::Status seqPatternMatchUpateOpRepository (std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, const std::vector< ir::OpType > &types, int begin_op_index)
 
virtual base::Status seqPatternMatchUpateTensorRepository (std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, const std::vector< ir::OpType > &types, int begin_op_index)
 模式匹配并更新tensor_repository More...
 
base::Status setNet (Net *net)
 
virtual ~OptPass ()
 

Protected Attributes

std::string name_
 
Netnet_
 

Detailed Description

Definition at line 38 of file optimizer.h.

Constructor & Destructor Documentation

◆ OptPass()

nndeploy::net::OptPass::OptPass ( std::string  name)

◆ ~OptPass()

virtual nndeploy::net::OptPass::~OptPass ( )
virtual

Member Function Documentation

◆ getName()

std::string nndeploy::net::OptPass::getName ( )

◆ optimize()

virtual base::Status nndeploy::net::OptPass::optimize ( std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository,
int  begin_op_index 
)
pure virtual

◆ rmInputTensorAndMaybeDelete()

virtual base::Status nndeploy::net::OptPass::rmInputTensorAndMaybeDelete ( OpWrapper op_wrapper,
std::vector< TensorWrapper * > &  tensor_repository 
)
virtual

处理一个Op的输入Tensor 将该Op从Tensor的消费者中删除,如果该Tensor的消费者仅有这一个Op作为消费者,则释放该Tensor

◆ rmOpFromPredecessor()

virtual base::Status nndeploy::net::OptPass::rmOpFromPredecessor ( OpWrapper op_wrapper)
virtual

将一个Op从它前驱的后继中删除

◆ rmOpFromSuccessors()

virtual base::Status nndeploy::net::OptPass::rmOpFromSuccessors ( OpWrapper op_wrapper)
virtual

将一个Op从它后继的前驱中删除

◆ rmOutputTensorAndMaybeDelete()

virtual base::Status nndeploy::net::OptPass::rmOutputTensorAndMaybeDelete ( OpWrapper op_wrapper,
std::vector< TensorWrapper * > &  tensor_repository 
)
virtual

处理一个Op的输出Tensor 将该Op从Tensor的生产者中删除,如果该Tensor的生产者仅有这一个Op作为生产者,则释放该Tensor

◆ seqPatternMatch() [1/2]

virtual int nndeploy::net::OptPass::seqPatternMatch ( std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository,
const std::vector< ir::OpType > &  types,
int  begin_op_index 
)
virtual

模式匹配

Parameters
tensor_repository
op_repository
pass_types
Returns
op_repository中匹配到的首个op的index,如果未匹配到则返回-1
Note
匹配规则:
  1. 匹配到的op的类型为pass_types中的第一个,且op的successors_中有且只有一个 2. 该op的successors_的类型为pass_types中的第二个,且op的successors_的predecessors_中有且只有一个
  2. 以此类推,直到pass_types中的最后一个

◆ seqPatternMatch() [2/2]

virtual int nndeploy::net::OptPass::seqPatternMatch ( std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository,
const std::vector< OpSet > &  types,
std::vector< ir::OpType > &  matched_types,
int  begin_op_index 
)
virtual
Parameters
tensor_repository
op_repository
types重载了上一个函数实现,对于type支持定义多种类型的type;
begin_op_index
Returns
op_repository中匹配到的首个op的index,如果未匹配到则返回-1

◆ seqPatternMatchUpateOpRepository()

virtual base::Status nndeploy::net::OptPass::seqPatternMatchUpateOpRepository ( std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository,
const std::vector< ir::OpType > &  types,
int  begin_op_index 
)
virtual

◆ seqPatternMatchUpateTensorRepository()

virtual base::Status nndeploy::net::OptPass::seqPatternMatchUpateTensorRepository ( std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository,
const std::vector< ir::OpType > &  types,
int  begin_op_index 
)
virtual

模式匹配并更新tensor_repository

Parameters
tensor_repository
op_repository
pass_types
begin_op_index
Returns
是否成功
Note
更新策略
  1. 更新tensor_repository: a. 更新最后一个op的输出:其生产者改为第一个op b. 删除除开最后一个op以外所有的输出

◆ setNet()

base::Status nndeploy::net::OptPass::setNet ( Net net)

Member Data Documentation

◆ name_

std::string nndeploy::net::OptPass::name_
protected

Definition at line 131 of file optimizer.h.

◆ net_

Net* nndeploy::net::OptPass::net_
protected
Initial value:
=
nullptr

Definition at line 133 of file optimizer.h.


The documentation for this class was generated from the following file: