nndeploy C++ API  0.2.0
nndeploy C++ API
Classes | Typedefs | Enumerations | Functions
nndeploy::net Namespace Reference

Classes

struct  Chunk
 
class  Net
 
struct  Offset
 
struct  OpBreadth
 
class  Optimizer
 
class  OptPass
 
class  OptPassCreator
 OptPass的创建类 More...
 
class  OpWrapper
 
class  PipelineTensor
 
class  Runtime
 
class  RuntimeCreator
 Runtime的创建类 More...
 
class  TensorPool
 
class  TensorPoolCreator
 TensorPool的创建类 More...
 
struct  TensorUsageRecord
 
class  TensorWrapper
 
class  TypeOptPassCreator
 OptPass的创建类模板 More...
 
class  TypeOptPassRegister
 OptPass的创建类的注册类模板 More...
 
class  TypeRuntimeCreator
 Runtime的创建类模板 More...
 
class  TypeRuntimeRegister
 Runtime的创建类的注册类模板 More...
 
class  TypeTensorPoolCreator
 TensorPool的创建类模板 More...
 
class  TypeTensorPoolRegister
 TensorPool的创建类的注册类模板 More...
 

Typedefs

using OpSet = std::unordered_set< ir::OpType >
 

Enumerations

enum  InputOutputType { kInput = 0 , kOutput = 1 , kBoth = 2 , kNone = 3 }
 
enum  OptPassType : int {
  kOptPassTypeFuseConvBias , kOptPassTypeFuseConvBatchNorm , kOptPassTypeFuseConvRelu , kOptPassTypeFuseConvAct ,
  kOptPassTypeEliminateCommonSubexpression , kOptPassTypeEliminateDeadOp , kOptPassTypeFoldConstant , kOptPassTypeFuseQdq
}
 
enum  TensorPoolType : int {
  kTensorPool1DSharedObjectTypeGreedyByBreadth , kTensorPool1DSharedObjectTypeGreedyBySize , kTensorPool1DSharedObjectTypeGreedyBySizeImprove , kTensorPool1DOffsetCalculateTypeGreedyBySize ,
  kTensorPool1DOffsetCalculateTypeGreedyByBreadth , kTensorPool1DNone
}
 

Functions

bool checkTensor (const std::vector< device::Tensor * > &src_tensors, const std::vector< device::Tensor * > &dst_tensors)
 
std::vector< OpWrapper * > checkUnuseOp (std::vector< OpWrapper * > &op_repository)
 
std::vector< TensorWrapper * > checkUnuseTensor (std::vector< OpWrapper * > &op_repository, std::vector< TensorWrapper * > &tensor_repository)
 
void chunkPrint (const std::vector< std::shared_ptr< Chunk >> &chunks)
 
NetcreateNet (ir::ModelDesc *model_desc, base::DeviceType device_type, base::PrecisionType precision_type)
 
std::shared_ptr< OptPasscreateOptPass (base::DeviceType device_type, int level, OptPassType type)
 
RuntimecreateRuntime (const base::DeviceType &device_type, base::ParallelType parallel_type)
 
TensorPoolcreateTensorPool (TensorPoolType type, device::Device *device, std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository)
 Create a TensorPool object. More...
 
base::Status dumpNet (std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, std::vector< device::Tensor * > &graph_inputs, std::vector< device::Tensor * > &graph_outputs, const std::string &name, std::ostream &oss)
 
std::vector< OpWrapper * > findEndOps (std::vector< OpWrapper * > &op_repository)
 
std::vector< TensorWrapper * > findEndTensors (std::vector< TensorWrapper * > &tensor_repository)
 
OpWrapperfindOpWrapper (std::vector< OpWrapper * > &op_repository, const std::string &name)
 
OpWrapperfindOpWrapper (std::vector< OpWrapper * > &op_repository, op::Op *node)
 
std::vector< OpWrapper * > findStartOps (std::vector< OpWrapper * > &op_repository)
 
std::vector< TensorWrapper * > findStartTensors (std::vector< TensorWrapper * > &tensor_repository)
 
TensorWrapperfindTensorWrapper (std::vector< TensorWrapper * > &tensor_repository, const std::string &tensor_name)
 
TensorWrapperfindTensorWrapper (std::vector< TensorWrapper * > &tensor_repository, device::Tensor *tensor)
 
std::map< base::DeviceTypeCode, std::map< int, std::map< OptPassType, std::shared_ptr< OptPassCreator > > > > & getGlobalOptPassCreatorMap ()
 Get the Global OptPass Creator Map object. More...
 
std::map< base::ParallelType, std::shared_ptr< RuntimeCreator > > & getGlobalRuntimeCreatorMap ()
 Get the Global Runtime Creator Map object. More...
 
std::map< TensorPoolType, std::shared_ptr< TensorPoolCreator > > & getGlobalTensorPoolCreatorMap ()
 Get the Global TensorPool Creator Map object. More...
 
op::OpgetOp (std::vector< OpWrapper * > &op_repository, const std::string &name)
 
std::vector< int > getOpOrderIndex (std::vector< OpWrapper * > &producers, std::vector< OpWrapper * > &consumers, std::vector< OpWrapper * > &op_repository)
 
device::TensorgetTensor (std::vector< TensorWrapper * > &tensor_repository, const std::string &tensor_name)
 
template<typename T >
void insertUnique (std::vector< T > &vec, const T &val)
 对vector插入不在vector中的元素,即类似集合的作用 More...
 
bool isInterval (std::array< int, 2 > &interval, std::vector< std::array< int, 2 >> &intervals)
 
std::string optPassTypeToString (OptPassType type)
 
void printNetInfo (const std::vector< OpWrapper * > &op_repository, const std::vector< TensorWrapper * > &tensor_repository)
 
base::Status setColor (std::vector< OpWrapper * > &op_repository, base::NodeColorType color)
 
OptPassType stringToOptPassType (const std::string &src)
 
TensorPoolType stringToTensorPoolType (const std::string &src)
 
std::string tensorPoolTypeToString (TensorPoolType type)
 
void tensorUsageRecordPrint (const std::vector< std::shared_ptr< TensorUsageRecord >> &tensor_usage_records)
 
base::Status topoSort (std::vector< OpWrapper * > &op_repository, base::TopoSortType topo_sort_type, std::vector< OpWrapper * > &topo_sort_node)
 
base::Status topoSortBFS (std::vector< OpWrapper * > &op_repository, std::vector< OpWrapper * > &topo_sort_node)
 
base::Status topoSortDFS (std::vector< OpWrapper * > &op_repository, std::vector< OpWrapper * > &topo_sort_node)
 

Typedef Documentation

◆ OpSet

using nndeploy::net::OpSet = typedef std::unordered_set<ir::OpType>

Definition at line 15 of file optimizer.h.

Enumeration Type Documentation

◆ InputOutputType

Enumerator
kInput 
kOutput 
kBoth 
kNone 

Definition at line 28 of file util.h.

◆ OptPassType

Enumerator
kOptPassTypeFuseConvBias 
kOptPassTypeFuseConvBatchNorm 
kOptPassTypeFuseConvRelu 
kOptPassTypeFuseConvAct 
kOptPassTypeEliminateCommonSubexpression 
kOptPassTypeEliminateDeadOp 
kOptPassTypeFoldConstant 
kOptPassTypeFuseQdq 

Definition at line 17 of file optimizer.h.

◆ TensorPoolType

Enumerator
kTensorPool1DSharedObjectTypeGreedyByBreadth 
kTensorPool1DSharedObjectTypeGreedyBySize 
kTensorPool1DSharedObjectTypeGreedyBySizeImprove 
kTensorPool1DOffsetCalculateTypeGreedyBySize 
kTensorPool1DOffsetCalculateTypeGreedyByBreadth 
kTensorPool1DNone 

Definition at line 28 of file tensor_pool.h.

Function Documentation

◆ checkTensor()

bool nndeploy::net::checkTensor ( const std::vector< device::Tensor * > &  src_tensors,
const std::vector< device::Tensor * > &  dst_tensors 
)

◆ checkUnuseOp()

std::vector<OpWrapper *> nndeploy::net::checkUnuseOp ( std::vector< OpWrapper * > &  op_repository)

◆ checkUnuseTensor()

std::vector<TensorWrapper *> nndeploy::net::checkUnuseTensor ( std::vector< OpWrapper * > &  op_repository,
std::vector< TensorWrapper * > &  tensor_repository 
)

◆ chunkPrint()

void nndeploy::net::chunkPrint ( const std::vector< std::shared_ptr< Chunk >> &  chunks)

◆ createNet()

Net* nndeploy::net::createNet ( ir::ModelDesc model_desc,
base::DeviceType  device_type,
base::PrecisionType  precision_type 
)

◆ createOptPass()

std::shared_ptr<OptPass> nndeploy::net::createOptPass ( base::DeviceType  device_type,
int  level,
OptPassType  type 
)

◆ createRuntime()

Runtime* nndeploy::net::createRuntime ( const base::DeviceType device_type,
base::ParallelType  parallel_type 
)

◆ createTensorPool()

TensorPool* nndeploy::net::createTensorPool ( TensorPoolType  type,
device::Device device,
std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository 
)

Create a TensorPool object.

Parameters
type
device
tensor_repository
op_repository
Returns
TensorPool*

◆ dumpNet()

base::Status nndeploy::net::dumpNet ( std::vector< TensorWrapper * > &  tensor_repository,
std::vector< OpWrapper * > &  op_repository,
std::vector< device::Tensor * > &  graph_inputs,
std::vector< device::Tensor * > &  graph_outputs,
const std::string &  name,
std::ostream &  oss 
)

◆ findEndOps()

std::vector<OpWrapper *> nndeploy::net::findEndOps ( std::vector< OpWrapper * > &  op_repository)

◆ findEndTensors()

std::vector<TensorWrapper *> nndeploy::net::findEndTensors ( std::vector< TensorWrapper * > &  tensor_repository)

◆ findOpWrapper() [1/2]

OpWrapper* nndeploy::net::findOpWrapper ( std::vector< OpWrapper * > &  op_repository,
const std::string &  name 
)

◆ findOpWrapper() [2/2]

OpWrapper* nndeploy::net::findOpWrapper ( std::vector< OpWrapper * > &  op_repository,
op::Op node 
)

◆ findStartOps()

std::vector<OpWrapper *> nndeploy::net::findStartOps ( std::vector< OpWrapper * > &  op_repository)

◆ findStartTensors()

std::vector<TensorWrapper *> nndeploy::net::findStartTensors ( std::vector< TensorWrapper * > &  tensor_repository)

◆ findTensorWrapper() [1/2]

TensorWrapper* nndeploy::net::findTensorWrapper ( std::vector< TensorWrapper * > &  tensor_repository,
const std::string &  tensor_name 
)

◆ findTensorWrapper() [2/2]

TensorWrapper* nndeploy::net::findTensorWrapper ( std::vector< TensorWrapper * > &  tensor_repository,
device::Tensor tensor 
)

◆ getGlobalOptPassCreatorMap()

std::map<base::DeviceTypeCode, std::map<int, std::map<OptPassType, std::shared_ptr<OptPassCreator> > > >& nndeploy::net::getGlobalOptPassCreatorMap ( )

Get the Global OptPass Creator Map object.

设备类型 -> 优化等级 -> Pass类型

◆ getGlobalRuntimeCreatorMap()

std::map<base::ParallelType, std::shared_ptr<RuntimeCreator> >& nndeploy::net::getGlobalRuntimeCreatorMap ( )

Get the Global Runtime Creator Map object.

Returns
std::map<ExecutorType, std::map<const std::string &, std::shared_ptr<RuntimeCreator>>>&

◆ getGlobalTensorPoolCreatorMap()

std::map<TensorPoolType, std::shared_ptr<TensorPoolCreator> >& nndeploy::net::getGlobalTensorPoolCreatorMap ( )

Get the Global TensorPool Creator Map object.

Returns
std::map<TensorPoolType, std::shared_ptr<TensorPoolCreator>>&

◆ getOp()

op::Op* nndeploy::net::getOp ( std::vector< OpWrapper * > &  op_repository,
const std::string &  name 
)

◆ getOpOrderIndex()

std::vector<int> nndeploy::net::getOpOrderIndex ( std::vector< OpWrapper * > &  producers,
std::vector< OpWrapper * > &  consumers,
std::vector< OpWrapper * > &  op_repository 
)

◆ getTensor()

device::Tensor* nndeploy::net::getTensor ( std::vector< TensorWrapper * > &  tensor_repository,
const std::string &  tensor_name 
)

◆ insertUnique()

template<typename T >
void nndeploy::net::insertUnique ( std::vector< T > &  vec,
const T &  val 
)

对vector插入不在vector中的元素,即类似集合的作用

Template Parameters
T
Parameters
vecMy Param doc
valMy Param doc

Definition at line 107 of file util.h.

◆ isInterval()

bool nndeploy::net::isInterval ( std::array< int, 2 > &  interval,
std::vector< std::array< int, 2 >> &  intervals 
)

◆ optPassTypeToString()

std::string nndeploy::net::optPassTypeToString ( OptPassType  type)

◆ printNetInfo()

void nndeploy::net::printNetInfo ( const std::vector< OpWrapper * > &  op_repository,
const std::vector< TensorWrapper * > &  tensor_repository 
)

◆ setColor()

base::Status nndeploy::net::setColor ( std::vector< OpWrapper * > &  op_repository,
base::NodeColorType  color 
)

◆ stringToOptPassType()

OptPassType nndeploy::net::stringToOptPassType ( const std::string &  src)

◆ stringToTensorPoolType()

TensorPoolType nndeploy::net::stringToTensorPoolType ( const std::string &  src)

◆ tensorPoolTypeToString()

std::string nndeploy::net::tensorPoolTypeToString ( TensorPoolType  type)

◆ tensorUsageRecordPrint()

void nndeploy::net::tensorUsageRecordPrint ( const std::vector< std::shared_ptr< TensorUsageRecord >> &  tensor_usage_records)

◆ topoSort()

base::Status nndeploy::net::topoSort ( std::vector< OpWrapper * > &  op_repository,
base::TopoSortType  topo_sort_type,
std::vector< OpWrapper * > &  topo_sort_node 
)

◆ topoSortBFS()

base::Status nndeploy::net::topoSortBFS ( std::vector< OpWrapper * > &  op_repository,
std::vector< OpWrapper * > &  topo_sort_node 
)

◆ topoSortDFS()

base::Status nndeploy::net::topoSortDFS ( std::vector< OpWrapper * > &  op_repository,
std::vector< OpWrapper * > &  topo_sort_node 
)