#include <optimizer.h>
|
| 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 () |
| |
Definition at line 38 of file optimizer.h.
◆ OptPass()
| nndeploy::net::OptPass::OptPass |
( |
std::string |
name | ) |
|
◆ ~OptPass()
| virtual nndeploy::net::OptPass::~OptPass |
( |
| ) |
|
|
virtual |
◆ 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()
处理一个Op的输入Tensor 将该Op从Tensor的消费者中删除,如果该Tensor的消费者仅有这一个Op作为消费者,则释放该Tensor
◆ rmOpFromPredecessor()
◆ rmOpFromSuccessors()
◆ rmOutputTensorAndMaybeDelete()
处理一个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
- 匹配规则:
- 匹配到的op的类型为pass_types中的第一个,且op的successors_中有且只有一个 2. 该op的successors_的类型为pass_types中的第二个,且op的successors_的predecessors_中有且只有一个
- 以此类推,直到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
- 更新策略
- 更新tensor_repository: a. 更新最后一个op的输出:其生产者改为第一个op b. 删除除开最后一个op以外所有的输出
◆ setNet()
◆ name_
| std::string nndeploy::net::OptPass::name_ |
|
protected |
◆ net_
| Net* nndeploy::net::OptPass::net_ |
|
protected |
The documentation for this class was generated from the following file:
- /home/docs/checkouts/readthedocs.org/user_builds/nndeploy-zh/checkouts/stable/framework/include/nndeploy/net/optimizer.h