ONE - On-device Neural Engine
|
#include <RuntimeGraph.h>
Data Structures | |
class | TensorAllocPlan |
Public Member Functions | |
RuntimeGraph (RuntimeModule *owning_module, IMemoryManager *memory_manager) | |
~RuntimeGraph () | |
Tensor * | addTensor (std::unique_ptr< Tensor > &&tensor) |
void | setInputTensors (const std::vector< Tensor * > &input_tensors) |
void | setOutputTensors (const std::vector< Tensor * > &output_tensors) |
void | configureAllocations (Tensor *tensor) |
const std::vector< Tensor * > & | getInputTensors () const |
const std::vector< Tensor * > & | getOutputTensors () const |
void | addKernel (std::unique_ptr< Kernel > &&kernel) |
void | execute () const |
RuntimeGraph ()=delete | |
RuntimeGraph (SimpleMemoryManager *memory_manager, CircleReader *circle_reader, RuntimeModule *runtime_module, uint32_t subgraph_index) | |
~RuntimeGraph () | |
Tensor * | addTensor (const circle::Tensor *raw_tensor, std::unique_ptr< Tensor > &&tensor) |
const circle::Tensor * | getCircleTensorByIndex (int32_t index) |
void | makeInplaceOperation (const circle::Tensor *src_tensor, const circle::Tensor *dst_tensor) |
uint8_t * | getDataByTensor (const circle::Tensor *raw_tensor) |
uint8_t * | getConstDataByTensor (const circle::Tensor *raw_tensor) |
uint8_t * | configureGraphInput (int32_t input_index) |
void | configureGraphInput (int32_t input_index, uint8_t *data) |
int32_t | getInputDataSizeByIndex (int32_t input_index) |
int32_t | getOutputDataSizeByIndex (int32_t output_index) |
int32_t | getNumOfInputTensors () |
int32_t | getNumOfOutputTensors () |
const circle::Tensor * | getInputTensorByIndex (int32_t input_index) |
const circle::Tensor * | getOutputTensorByIndex (int32_t input_index) |
uint8_t * | getOutputDataByIndex (int32_t output_index) |
void | addInplaceOpIndex (const circle::Operator *op) |
void | execute () |
void | configure (bool dealloc_input) |
void | invalidate () |
bool | isValid () const |
void | selectOwnSubgraph () |
void | resetOutputTensorsData () |
void | clearTensors () |
void | setDataToTensor (const circle::Tensor *tensor, uint8_t *data) |
void | resetTensorData (uint8_t *new_data, const circle::Tensor *tensor) |
RuntimeModule * | getRuntimeModule () |
bool | is_inplace_op (const circle::Operator *op) |
void | addDynamicShapeTensor (const circle::Tensor *tensor, luci_interpreter::RuntimeShape &&shapes) |
luci_interpreter::RuntimeShape * | getDynamicShapeTensor (const circle::Tensor *tensor) |
void | removeDynamicShapeTensor (const circle::Tensor *tensor) |
Friends | |
class | TensorAllocPlan |
Definition at line 32 of file RuntimeGraph.h.
|
explicit |
Definition at line 103 of file RuntimeGraph.cpp.
luci_interpreter::RuntimeGraph::~RuntimeGraph | ( | ) |
Definition at line 109 of file RuntimeGraph.cpp.
References luci_interpreter::IMemoryManager::release_memory().
|
delete |
|
explicit |
Definition at line 27 of file RuntimeGraph.cpp.
luci_interpreter::RuntimeGraph::~RuntimeGraph | ( | ) |
void luci_interpreter::RuntimeGraph::addDynamicShapeTensor | ( | const circle::Tensor * | tensor, |
luci_interpreter::RuntimeShape && | shapes | ||
) |
Definition at line 144 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::execute_kernel_CircleAdd(), luci_interpreter::execute_kernel_CircleReshape(), and luci_interpreter::execute_kernel_CircleSlice().
|
inline |
Definition at line 94 of file RuntimeGraph.h.
Referenced by luci_interpreter::GraphLoader::checkInplaceOps().
void luci_interpreter::RuntimeGraph::addKernel | ( | std::unique_ptr< Kernel > && | kernel | ) |
Definition at line 144 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::GraphLoader::loadOperators().
Tensor * luci_interpreter::RuntimeGraph::addTensor | ( | const circle::Tensor * | raw_tensor, |
std::unique_ptr< Tensor > && | tensor | ||
) |
Definition at line 118 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::build_kernel_CircleAveragePool2D(), luci_interpreter::build_kernel_CircleBatchMatMul(), luci_interpreter::build_kernel_CircleConv2D(), luci_interpreter::build_kernel_CircleDepthwiseConv2D(), luci_interpreter::build_kernel_CircleFullyConnected(), luci_interpreter::build_kernel_CircleMean(), luci_interpreter::build_kernel_CircleReduceMax(), luci_interpreter::build_kernel_CircleReduceProd(), luci_interpreter::build_kernel_CircleSum(), luci_interpreter::build_kernel_CircleSVDF(), luci_interpreter::build_kernel_CircleTransposeConv(), luci_interpreter::build_kernel_CircleUnidirectionalSequenceLSTM(), and luci_interpreter::GraphLoader::loadTensors().
void luci_interpreter::RuntimeGraph::clearTensors | ( | ) |
Definition at line 370 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::execute_kernel_CircleIf().
void luci_interpreter::RuntimeGraph::configure | ( | bool | dealloc_input | ) |
Definition at line 435 of file RuntimeGraph.cpp.
References luci::VectorWrapper< T >::at(), luci::CircleReader::builtin_code(), luci_interpreter::KernelConfigureRegistry::configure_kernel(), luci_interpreter::kernel_configure, luci::CircleReader::operators(), selectOwnSubgraph(), and size.
Referenced by execute(), and luci_interpreter::ModuleLoader::load().
void luci_interpreter::RuntimeGraph::configureAllocations | ( | Tensor * | tensor | ) |
Definition at line 139 of file RuntimeGraph.cpp.
References luci_interpreter::IMemoryManager::allocate_memory().
Referenced by luci_interpreter::build_kernel_CircleFullyConnected().
uint8_t * luci_interpreter::RuntimeGraph::configureGraphInput | ( | int32_t | input_index | ) |
Definition at line 245 of file RuntimeGraph.cpp.
References luci_interpreter::IMemoryManager::allocate_memory(), configureGraphInput(), flatbuffers::data(), luci::CircleReader::inputs(), and luci::CircleReader::tensors().
Referenced by configureGraphInput(), and luci_interpreter::execute_kernel_CircleIf().
void luci_interpreter::RuntimeGraph::configureGraphInput | ( | int32_t | input_index, |
uint8_t * | data | ||
) |
Definition at line 260 of file RuntimeGraph.cpp.
References flatbuffers::data(), luci::CircleReader::inputs(), luci_interpreter::IMemoryManager::release_memory(), resetOutputTensorsData(), and luci::CircleReader::tensors().
void luci_interpreter::RuntimeGraph::execute | ( | ) |
Definition at line 460 of file RuntimeGraph.cpp.
References luci::VectorWrapper< T >::at(), luci::CircleReader::builtin_code(), configure(), luci_interpreter::KernelExecuteRegistry::execute_kernel(), luci_interpreter::kernel_executor, luci::CircleReader::operators(), luci::CircleReader::outputs(), selectOwnSubgraph(), luci::VectorWrapper< T >::size(), and luci::CircleReader::tensors().
void luci_interpreter::RuntimeGraph::execute | ( | ) | const |
Definition at line 151 of file RuntimeGraph.cpp.
References luci_interpreter::RuntimeModule::getEventNotifier(), getInputTensors(), luci_interpreter::EventNotifier::postOperatorExecute(), luci_interpreter::EventNotifier::postTensorWrite(), and luci_interpreter::EventNotifier::preOperatorExecute().
Referenced by luci_interpreter::RuntimeModule::execute(), luci_interpreter::RuntimeModule::execute(), luci_interpreter::kernels::While::execute(), and luci_interpreter::execute_kernel_CircleIf().
const circle::Tensor * luci_interpreter::RuntimeGraph::getCircleTensorByIndex | ( | int32_t | index | ) |
Definition at line 424 of file RuntimeGraph.cpp.
References luci::CircleReader::tensors().
Referenced by luci_interpreter::configure_kernel_CircleAddN(), luci_interpreter::configure_kernel_CircleConcatenation(), luci_interpreter::configure_kernel_CircleExpandDims(), luci_interpreter::configure_kernel_CircleFloor(), luci_interpreter::configure_kernel_CircleFullyConnected(), luci_interpreter::configure_kernel_CircleIf(), luci_interpreter::configure_kernel_CircleNeg(), luci_interpreter::configure_kernel_CircleResizeBilinear(), luci_interpreter::configure_kernel_CircleSelectV2(), luci_interpreter::configure_kernel_CircleSplit(), luci_interpreter::configure_kernel_CircleSplitV(), luci_interpreter::configure_kernel_CircleSVDF(), luci_interpreter::configure_kernel_CircleTransposeConv(), luci_interpreter::configure_kernel_CircleUnpack(), luci_interpreter::kernels::DownsamplingConv2DKernel::DownsamplingConv2DKernel(), luci_interpreter::execute_kernel_CircleAddN(), luci_interpreter::execute_kernel_CircleConcatenation(), luci_interpreter::execute_kernel_CircleExpandDims(), luci_interpreter::execute_kernel_CircleFloor(), luci_interpreter::execute_kernel_CircleFullyConnected(), luci_interpreter::execute_kernel_CircleIf(), luci_interpreter::execute_kernel_CircleNeg(), luci_interpreter::execute_kernel_CirclePack(), luci_interpreter::execute_kernel_CircleReshape(), luci_interpreter::execute_kernel_CircleResizeBilinear(), luci_interpreter::execute_kernel_CircleSelectV2(), luci_interpreter::execute_kernel_CircleSplit(), luci_interpreter::execute_kernel_CircleSplitV(), luci_interpreter::execute_kernel_CircleSVDF(), luci_interpreter::execute_kernel_CircleTransposeConv(), luci_interpreter::execute_kernel_CircleUnidirectionalSequenceLSTM(), luci_interpreter::execute_kernel_CircleUnpack(), luci_interpreter::lstm::LSTMStruct::LSTMStruct(), luci_interpreter::kernels::MISOKernel::MISOKernel(), luci_interpreter::kernels::SISOKernel::SISOKernel(), luci_interpreter::splitImpl(), and luci_interpreter::kernels::TISOKernel::TISOKernel().
uint8_t * luci_interpreter::RuntimeGraph::getConstDataByTensor | ( | const circle::Tensor * | raw_tensor | ) |
Definition at line 398 of file RuntimeGraph.cpp.
References luci::CircleReader::buffers(), luci::VectorWrapper< T >::data(), and luci::wrap().
Referenced by luci_interpreter_pal::lstm_internal::calculateLstmGate(), luci_interpreter::configure_kernel_CircleConv2D(), luci_interpreter::configure_kernel_CircleDepthwiseConv2D(), luci_interpreter::configure_kernel_CircleExpandDims(), luci_interpreter::configure_kernel_CircleMean(), luci_interpreter::configure_kernel_CirclePadCommon(), luci_interpreter::configure_kernel_CircleReduceMax(), luci_interpreter::configure_kernel_CircleSplitV(), luci_interpreter::configure_kernel_CircleSum(), luci_interpreter::configure_kernel_CircleTranspose(), luci_interpreter::configure_kernel_CircleTransposeConv(), luci_interpreter::kernels::evalComparisonGeneric(), luci_interpreter::execute_kernel_CircleBatchToSpaceND(), luci_interpreter::execute_kernel_CircleGatherND(), luci_interpreter::execute_kernel_CircleLogicalAnd(), luci_interpreter::execute_kernel_CircleLogicalNot(), luci_interpreter::execute_kernel_CircleLogicalOr(), luci_interpreter::execute_kernel_CirclePadCommon(), luci_interpreter::execute_kernel_CircleReshape(), luci_interpreter::execute_kernel_CircleResizeBilinear(), luci_interpreter::execute_kernel_CircleResizeNearestNeighbor(), luci_interpreter::execute_kernel_CircleSlice(), luci_interpreter::execute_kernel_CircleSpaceToBatchND(), luci_interpreter::execute_kernel_CircleSplit(), luci_interpreter::execute_kernel_CircleSplitV(), luci_interpreter::execute_kernel_CircleStridedSlice(), luci_interpreter::execute_kernel_CircleSVDF(), luci_interpreter::kernels::TISOKernel::readData(), and luci_interpreter::kernels::TISOKernel::readInplaceData().
uint8_t * luci_interpreter::RuntimeGraph::getDataByTensor | ( | const circle::Tensor * | raw_tensor | ) |
Definition at line 355 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::configure_kernel_CircleSqueeze(), luci_interpreter::kernels::evalComparisonGeneric(), luci_interpreter::evalInteger(), luci_interpreter::execute_kernel_CircleAbs(), luci_interpreter::execute_kernel_CircleAveragePool2D(), luci_interpreter::execute_kernel_CircleBatchToSpaceND(), luci_interpreter::execute_kernel_CircleBroadcastTo(), luci_interpreter::execute_kernel_CircleCast(), luci_interpreter::execute_kernel_CircleCeil(), luci_interpreter::execute_kernel_CircleCos(), luci_interpreter::execute_kernel_CircleDepthToSpace(), luci_interpreter::execute_kernel_CircleDequantize(), luci_interpreter::execute_kernel_CircleElu(), luci_interpreter::execute_kernel_CircleExp(), luci_interpreter::execute_kernel_CircleExpandDims(), luci_interpreter::execute_kernel_CircleFloor(), luci_interpreter::execute_kernel_CircleFloorDiv(), luci_interpreter::execute_kernel_CircleFloorMod(), luci_interpreter::execute_kernel_CircleGatherND(), luci_interpreter::execute_kernel_CircleIf(), luci_interpreter::execute_kernel_CircleL2Normalize(), luci_interpreter::execute_kernel_CircleL2Pool2D(), luci_interpreter::execute_kernel_CircleLeakyRelu(), luci_interpreter::execute_kernel_CircleLog(), luci_interpreter::execute_kernel_CircleLogicalAnd(), luci_interpreter::execute_kernel_CircleLogicalNot(), luci_interpreter::execute_kernel_CircleLogicalOr(), luci_interpreter::execute_kernel_CircleLogistic(), luci_interpreter::execute_kernel_CircleLogSoftmax(), luci_interpreter::execute_kernel_CircleMaximum(), luci_interpreter::execute_kernel_CircleMaxPool2D(), luci_interpreter::execute_kernel_CircleMinimum(), luci_interpreter::execute_kernel_CircleNeg(), luci_interpreter::execute_kernel_CirclePack(), luci_interpreter::execute_kernel_CirclePadCommon(), luci_interpreter::execute_kernel_CircleQuantize(), luci_interpreter::execute_kernel_CircleRelu(), luci_interpreter::execute_kernel_CircleRelu6(), luci_interpreter::execute_kernel_CircleReshape(), luci_interpreter::execute_kernel_CircleResizeBilinear(), luci_interpreter::execute_kernel_CircleResizeNearestNeighbor(), luci_interpreter::execute_kernel_CircleRound(), luci_interpreter::execute_kernel_CircleRsqrt(), luci_interpreter::execute_kernel_CircleShape(), luci_interpreter::execute_kernel_CircleSin(), luci_interpreter::execute_kernel_CircleSlice(), luci_interpreter::execute_kernel_CircleSpaceToBatchND(), luci_interpreter::execute_kernel_CircleSpaceToDepth(), luci_interpreter::execute_kernel_CircleSplit(), luci_interpreter::execute_kernel_CircleSplitV(), luci_interpreter::execute_kernel_CircleSqrt(), luci_interpreter::execute_kernel_CircleSquare(), luci_interpreter::execute_kernel_CircleSquaredDifference(), luci_interpreter::execute_kernel_CircleSqueeze(), luci_interpreter::execute_kernel_CircleStridedSlice(), luci_interpreter::execute_kernel_CircleSVDF(), luci_interpreter::execute_kernel_CircleTanh(), luci_interpreter::execute_kernel_CircleZerosLike(), luci_interpreter_pal::lstm_internal::lstmStep(), luci_interpreter::kernels::TISOKernel::readData(), luci_interpreter::kernels::TISOKernel::readInplaceData(), and luci_interpreter::splitImpl().
luci_interpreter::RuntimeShape * luci_interpreter::RuntimeGraph::getDynamicShapeTensor | ( | const circle::Tensor * | tensor | ) |
Definition at line 151 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::kernels::getTensorDims(), and luci_interpreter::kernels::getTensorRuntimeShape().
int32_t luci_interpreter::RuntimeGraph::getInputDataSizeByIndex | ( | int32_t | input_index | ) |
Definition at line 279 of file RuntimeGraph.cpp.
References luci::CircleReader::inputs(), size, and luci::CircleReader::tensors().
const circle::Tensor * luci_interpreter::RuntimeGraph::getInputTensorByIndex | ( | int32_t | input_index | ) |
Definition at line 302 of file RuntimeGraph.cpp.
References luci::CircleReader::inputs(), and luci::CircleReader::tensors().
|
inline |
Definition at line 49 of file RuntimeGraph.h.
Referenced by luci_interpreter::kernels::While::configure(), execute(), luci_interpreter::kernels::If::execute(), luci_interpreter::kernels::While::execute(), and luci_interpreter::RuntimeModule::getInputTensors().
int32_t luci_interpreter::RuntimeGraph::getNumOfInputTensors | ( | ) |
Definition at line 290 of file RuntimeGraph.cpp.
References luci::CircleReader::inputs().
int32_t luci_interpreter::RuntimeGraph::getNumOfOutputTensors | ( | ) |
Definition at line 296 of file RuntimeGraph.cpp.
References luci::CircleReader::outputs().
uint8_t * luci_interpreter::RuntimeGraph::getOutputDataByIndex | ( | int32_t | output_index | ) |
Definition at line 341 of file RuntimeGraph.cpp.
References luci::CircleReader::outputs(), and luci::CircleReader::tensors().
Referenced by luci_interpreter::execute_kernel_CircleIf().
int32_t luci_interpreter::RuntimeGraph::getOutputDataSizeByIndex | ( | int32_t | output_index | ) |
Definition at line 322 of file RuntimeGraph.cpp.
References luci::CircleReader::outputs(), size, and luci::CircleReader::tensors().
const circle::Tensor * luci_interpreter::RuntimeGraph::getOutputTensorByIndex | ( | int32_t | input_index | ) |
Definition at line 312 of file RuntimeGraph.cpp.
References luci::CircleReader::outputs(), and luci::CircleReader::tensors().
|
inline |
Definition at line 50 of file RuntimeGraph.h.
Referenced by luci_interpreter::kernels::While::configure(), luci_interpreter::kernels::While::execute(), and luci_interpreter::RuntimeModule::getOutputTensors().
|
inline |
Definition at line 111 of file RuntimeGraph.h.
Referenced by luci_interpreter::configure_kernel_CircleIf(), luci_interpreter::configure_kernel_CircleWhile(), luci_interpreter::execute_kernel_CircleIf(), and luci_interpreter::execute_kernel_CircleWhile().
|
inline |
Definition at line 99 of file RuntimeGraph.h.
Referenced by luci_interpreter::RuntimeGraph::TensorAllocPlan::build().
|
inline |
Definition at line 113 of file RuntimeGraph.h.
Referenced by luci_interpreter::execute_kernel_CircleAbs(), luci_interpreter::execute_kernel_CircleAdd(), luci_interpreter::execute_kernel_CircleCeil(), luci_interpreter::execute_kernel_CircleCos(), luci_interpreter::execute_kernel_CircleDiv(), luci_interpreter::execute_kernel_CircleElu(), luci_interpreter::execute_kernel_CircleExp(), luci_interpreter::execute_kernel_CircleExpandDims(), luci_interpreter::execute_kernel_CircleLeakyRelu(), luci_interpreter::execute_kernel_CircleLog(), luci_interpreter::execute_kernel_CircleLogistic(), luci_interpreter::execute_kernel_CircleMul(), luci_interpreter::execute_kernel_CircleRelu(), luci_interpreter::execute_kernel_CircleRelu6(), luci_interpreter::execute_kernel_CircleReshape(), luci_interpreter::execute_kernel_CircleRound(), luci_interpreter::execute_kernel_CircleRsqrt(), luci_interpreter::execute_kernel_CircleSin(), luci_interpreter::execute_kernel_CircleSqrt(), luci_interpreter::execute_kernel_CircleSquare(), luci_interpreter::execute_kernel_CircleSub(), luci_interpreter::execute_kernel_CircleTanh(), luci_interpreter::execute_kernel_CircleUnidirectionalSequenceLSTM(), luci_interpreter::execute_kernel_CircleWhile(), and luci_interpreter::execute_kernel_CircleZerosLike().
|
inline |
Definition at line 100 of file RuntimeGraph.h.
void luci_interpreter::RuntimeGraph::makeInplaceOperation | ( | const circle::Tensor * | src_tensor, |
const circle::Tensor * | dst_tensor | ||
) |
Definition at line 372 of file RuntimeGraph.cpp.
References flatbuffers::data(), and dst_tensor.
Referenced by luci_interpreter::kernels::evalTISOInplaceKernel(), luci_interpreter::kernels::evalTISOInplaceQuantizedKernel(), luci_interpreter::execute_kernel_CircleAbs(), luci_interpreter::execute_kernel_CircleCeil(), luci_interpreter::execute_kernel_CircleCos(), luci_interpreter::execute_kernel_CircleElu(), luci_interpreter::execute_kernel_CircleExp(), luci_interpreter::execute_kernel_CircleExpandDims(), luci_interpreter::execute_kernel_CircleLeakyRelu(), luci_interpreter::execute_kernel_CircleLog(), luci_interpreter::execute_kernel_CircleLogistic(), luci_interpreter::execute_kernel_CircleRelu(), luci_interpreter::execute_kernel_CircleRelu6(), luci_interpreter::execute_kernel_CircleReshape(), luci_interpreter::execute_kernel_CircleRound(), luci_interpreter::execute_kernel_CircleRsqrt(), luci_interpreter::execute_kernel_CircleSin(), luci_interpreter::execute_kernel_CircleSqrt(), luci_interpreter::execute_kernel_CircleSquare(), luci_interpreter::execute_kernel_CircleTanh(), and luci_interpreter::execute_kernel_CircleZerosLike().
void luci_interpreter::RuntimeGraph::removeDynamicShapeTensor | ( | const circle::Tensor * | tensor | ) |
Definition at line 159 of file RuntimeGraph.cpp.
void luci_interpreter::RuntimeGraph::resetOutputTensorsData | ( | ) |
Definition at line 220 of file RuntimeGraph.cpp.
References flatbuffers::data(), luci::CircleReader::inputs(), luci::CircleReader::outputs(), luci_interpreter::IMemoryManager::release_memory(), size, and luci::CircleReader::tensors().
Referenced by configureGraphInput(), and luci_interpreter::execute_kernel_CircleIf().
void luci_interpreter::RuntimeGraph::resetTensorData | ( | uint8_t * | new_data, |
const circle::Tensor * | tensor | ||
) |
Definition at line 207 of file RuntimeGraph.cpp.
References flatbuffers::data(), and luci_interpreter::IMemoryManager::release_memory().
Referenced by luci_interpreter::execute_kernel_CircleAdd(), luci_interpreter::execute_kernel_CircleReshape(), and luci_interpreter::execute_kernel_CircleSlice().
|
inline |
Definition at line 102 of file RuntimeGraph.h.
Referenced by configure(), execute(), and luci_interpreter::execute_kernel_CircleIf().
void luci_interpreter::RuntimeGraph::setDataToTensor | ( | const circle::Tensor * | tensor, |
uint8_t * | data | ||
) |
Definition at line 455 of file RuntimeGraph.cpp.
References flatbuffers::data().
void luci_interpreter::RuntimeGraph::setInputTensors | ( | const std::vector< Tensor * > & | input_tensors | ) |
Definition at line 125 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::GraphLoader::initInputOutputTensors().
void luci_interpreter::RuntimeGraph::setOutputTensors | ( | const std::vector< Tensor * > & | output_tensors | ) |
Definition at line 132 of file RuntimeGraph.cpp.
Referenced by luci_interpreter::GraphLoader::initInputOutputTensors().
|
friend |
Definition at line 36 of file RuntimeGraph.h.