ONE - On-device Neural Engine
Loading...
Searching...
No Matches
onert::exec::LinearExecutor Class Referencefinal

Class to handle execution phase. Simple run the sequence of operations that is sorted in topological order. More...

#include <LinearExecutor.h>

Collaboration diagram for onert::exec::LinearExecutor:

Public Member Functions

 LinearExecutor (std::unique_ptr< compiler::LoweredGraph > lowered_graph, backend::BackendContexts &&backend_contexts, const compiler::TensorRegistries &tensor_regs, compiler::CodeMap &&code_map, const std::vector< ir::OperationIndex > &order, const util::TracingCtx *tracing_ctx)
 Construct a new LinearExecutor object.
 
void executeImpl (const ExecutionObservee &subject) override
 
- Public Member Functions inherited from onert::exec::ExecutorBase
 ExecutorBase (std::unique_ptr< compiler::LoweredGraph > &&lowered_graph, backend::BackendContexts &&backend_contexts, const compiler::TensorRegistries &tensor_regs, const util::TracingCtx *tracing_ctx)
 Construct a new ExecutorBase object.
 
virtual ~ExecutorBase ()=default
 
const ir::Graphgraph () const final
 Returns graph object.
 
void execute (const std::vector< backend::IPortableTensor * > &inputs, const std::vector< backend::IPortableTensor * > &outputs, const ExecutionOptions &options) override
 Execute with given input/output tensors.
 
uint32_t inputSize () const override
 Get input size.
 
uint32_t outputSize () const override
 Get output size.
 
const ir::OperandInfoinputInfo (uint32_t index) const override
 Get input info at index.
 
const ir::OperandInfooutputInfo (uint32_t index) const override
 Get output info at index.
 
ir::Layout inputLayout (uint32_t index) const override
 Get input layout at index.
 
ir::Layout outputLayout (uint32_t index) const override
 Get output layout at index.
 
void setIndexedRanks (std::shared_ptr< ir::OperationIndexMap< int64_t > > ranks) final
 Set an ordering on operations.
 
void addObserver (std::unique_ptr< IExecutionObserver > ref)
 
backend::BackendContextsgetBackendContexts ()
 
const ExecutionOptionscurrentOptions () const override
 Return current execution configuration.
 
- Public Member Functions inherited from onert::exec::IExecutor
 IExecutor ()=default
 Construct a new IExecutor object.
 
virtual ~IExecutor ()=default
 Destroy the IExecutor object.
 

Additional Inherited Members

- Protected Member Functions inherited from onert::exec::ExecutorBase
bool hasDynamicInput ()
 Returns true if any input tensor is dynamic; false if all are static tensors.
 
- Protected Attributes inherited from onert::exec::ExecutorBase
ExecObservers _observers
 
std::shared_ptr< ir::OperationIndexMap< int64_t > > _indexed_ranks
 
std::unique_ptr< compiler::LoweredGraph_lowered_graph
 
backend::BackendContexts _backend_contexts
 
const ir::Graph_graph
 
std::vector< backend::builtin::IOTensor * > _input_tensors
 
std::vector< backend::builtin::IOTensor * > _output_tensors
 
std::mutex _mutex
 
const util::TracingCtx_tracing_ctx
 
ExecutionOptions _current_options
 

Detailed Description

Class to handle execution phase. Simple run the sequence of operations that is sorted in topological order.

Definition at line 40 of file LinearExecutor.h.

Constructor & Destructor Documentation

◆ LinearExecutor()

onert::exec::LinearExecutor::LinearExecutor ( std::unique_ptr< compiler::LoweredGraph lowered_graph,
backend::BackendContexts &&  backend_contexts,
const compiler::TensorRegistries tensor_regs,
compiler::CodeMap &&  code_map,
const std::vector< ir::OperationIndex > &  order,
const util::TracingCtx tracing_ctx 
)
inline

Construct a new LinearExecutor object.

Parameters
lowered_graphLoweredGraph object
tensor_buildersTensor builders that are currently used
code_mapir::Operation and its code map

Definition at line 49 of file LinearExecutor.h.

53 : ExecutorBase{std::move(lowered_graph), std::move(backend_contexts), tensor_regs, tracing_ctx}
54 {
55 for (auto &&index : order)
56 {
57 _code.emplace_back(std::move(code_map.at(index)));
58 }
59 }
ExecutorBase(std::unique_ptr< compiler::LoweredGraph > &&lowered_graph, backend::BackendContexts &&backend_contexts, const compiler::TensorRegistries &tensor_regs, const util::TracingCtx *tracing_ctx)
Construct a new ExecutorBase object.

Member Function Documentation

◆ executeImpl()

void onert::exec::LinearExecutor::executeImpl ( const ExecutionObservee subject)
overridevirtual

Implements onert::exec::ExecutorBase.

Definition at line 27 of file LinearExecutor.cc.

28{
29 if (!subject.isEmpty() && _tracing_ctx)
30 {
31 auto profiling_subg_index = _tracing_ctx->getSubgraphIndex(&_graph);
32
33 subject.notifySubgraphBegin(profiling_subg_index);
34 for (auto &&code : _code)
35 {
36 const auto backend = code.op_backend;
37// TODO : Move ruy profiler into ExecutionObserver
38#ifdef RUY_PROFILER
39 ruy::profiler::ScopeLabel label(code.op->name());
40#endif
41 subject.notifyJobBegin(this, profiling_subg_index, code.op_ind, backend);
42
43 auto &fn_seq = code.fn_seq;
44
45 fn_seq->initRunning();
46
47 bool handle_dynamic_tensor =
48 _lowered_graph->getHasDynamicTensor(code.op_ind) || hasDynamicInput();
49 fn_seq->enableDynamicShapeInferer(handle_dynamic_tensor);
50 fn_seq->run();
51
52 subject.notifyJobEnd(this, profiling_subg_index, code.op_ind, backend);
53 }
54 subject.notifySubgraphEnd(profiling_subg_index);
55 }
56 else
57 {
58 for (auto &&code : _code)
59 {
60// TODO : Move ruy profiler into ExecutionObserver
61#ifdef RUY_PROFILER
62 ruy::profiler::ScopeLabel label(code.op->name());
63#endif
64
65 auto &fn_seq = code.fn_seq;
66
67 fn_seq->initRunning();
68
69 bool handle_dynamic_tensor =
70 _lowered_graph->getHasDynamicTensor(code.op_ind) || hasDynamicInput();
71 fn_seq->enableDynamicShapeInferer(handle_dynamic_tensor);
72 fn_seq->run();
73 }
74 }
75}
std::unique_ptr< compiler::LoweredGraph > _lowered_graph
bool hasDynamicInput()
Returns true if any input tensor is dynamic; false if all are static tensors.
const util::TracingCtx * _tracing_ctx
const ir::Graph & _graph
ir::SubgraphIndex getSubgraphIndex(const ir::Graph *g) const
Get subgraph index of a graph.
Definition TracingCtx.h:61
Code * code(const SessionID &sess)
Definition Session.cpp:54

References onert::exec::ExecutorBase::_graph, onert::exec::ExecutorBase::_lowered_graph, onert::exec::ExecutorBase::_tracing_ctx, onert::util::TracingCtx::getSubgraphIndex(), onert::exec::ExecutorBase::hasDynamicInput(), onert::exec::ExecutionObservee::isEmpty(), onert::exec::ExecutionObservee::notifyJobBegin(), onert::exec::ExecutionObservee::notifyJobEnd(), onert::exec::ExecutionObservee::notifySubgraphBegin(), and onert::exec::ExecutionObservee::notifySubgraphEnd().


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