diff options
Diffstat (limited to 'ModelToINetworkConverter.cpp')
-rw-r--r-- | ModelToINetworkConverter.cpp | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/ModelToINetworkConverter.cpp b/ModelToINetworkConverter.cpp index 05e60462..24fb4903 100644 --- a/ModelToINetworkConverter.cpp +++ b/ModelToINetworkConverter.cpp @@ -6,8 +6,10 @@ #define LOG_TAG "ArmnnDriver" #include "ModelToINetworkConverter.hpp" +#include "Utils.hpp" #include <log/log.h> +#include <type_traits> namespace armnn_driver { @@ -62,21 +64,29 @@ void ModelToINetworkConverter<HalPolicy>::Convert() // add operations to it // track which layer outputs each operand - m_Data.m_OutputSlotForOperand = std::vector<armnn::IOutputSlot*>(m_Model.operands.size(), nullptr); - + ALOGV("ModelToINetworkConverter::Convert(): m_OutputSlotForOperand"); + m_Data.m_OutputSlotForOperand = std::vector<armnn::IOutputSlot*>(getMainModel(m_Model).operands.size(), nullptr); try { - for (uint32_t i = 0; i < m_Model.inputIndexes.size(); i++) + ALOGV("ModelToINetworkConverter::Convert(): for getMainModel(m_Model).inputIndexes.size()"); + for (uint32_t i = 0; i < getMainModel(m_Model).inputIndexes.size(); i++) { + ALOGV("ModelToINetworkConverter::Convert(): getMainModel(m_Model).inputIndexes[i]"); // inputs in android nn are represented by operands - uint32_t inputIndex = m_Model.inputIndexes[i]; - const HalOperand& operand = m_Model.operands[inputIndex]; + uint32_t inputIndex = getMainModel(m_Model).inputIndexes[i]; + ALOGV("ModelToINetworkConverter::Convert(): getMainModel(m_Model).operands[inputIndex];"); + const HalOperand& operand = getMainModel(m_Model).operands[inputIndex]; + ALOGV("ModelToINetworkConverter::Convert(): GetTensorInfoForOperand(operand)"); const armnn::TensorInfo& tensor = GetTensorInfoForOperand(operand); + ALOGV("ModelToINetworkConverter::Convert(): m_Data.m_Network->AddInputLayer(i)"); armnn::IConnectableLayer* layer = m_Data.m_Network->AddInputLayer(i); + ALOGV("ModelToINetworkConverter::Convert(): layer->GetOutputSlot(0)"); armnn::IOutputSlot& outputSlot = layer->GetOutputSlot(0); + ALOGV("ModelToINetworkConverter::Convert(): outputSlot.SetTensorInfo(GetTensorInfoForOperand(operand))"); outputSlot.SetTensorInfo(GetTensorInfoForOperand(operand)); + ALOGV("ModelToINetworkConverter::Convert(): m_Data.m_OutputSlotForOperand[inputIndex] = &outputSlot"); // store for later layers m_Data.m_OutputSlotForOperand[inputIndex] = &outputSlot; } @@ -92,9 +102,9 @@ void ModelToINetworkConverter<HalPolicy>::Convert() m_ConversionResult = ConversionResult::UnsupportedFeature; } - for (uint32_t operationIdx = 0; operationIdx < m_Model.operations.size(); operationIdx++) + for (uint32_t operationIdx = 0; operationIdx < getMainModel(m_Model).operations.size(); operationIdx++) { - const auto& operation = m_Model.operations[operationIdx]; + const auto& operation = getMainModel(m_Model).operations[operationIdx]; bool ok = true; if (m_ForcedUnsupportedOperations.find(operationIdx) != m_ForcedUnsupportedOperations.end()) @@ -135,11 +145,11 @@ void ModelToINetworkConverter<HalPolicy>::Convert() { if (m_ConversionResult == ConversionResult::Success) { - for (uint32_t i = 0; i < m_Model.outputIndexes.size(); i++) + for (uint32_t i = 0; i < getMainModel(m_Model).outputIndexes.size(); i++) { // outputs in android nn are represented by operands - uint32_t outputIndex = m_Model.outputIndexes[i]; - const HalOperand& operand = m_Model.operands[outputIndex]; + uint32_t outputIndex = getMainModel(m_Model).outputIndexes[i]; + const HalOperand& operand = getMainModel(m_Model).operands[outputIndex]; const armnn::TensorInfo& tensor = GetTensorInfoForOperand(operand); armnn::IConnectableLayer* layer = m_Data.m_Network->AddOutputLayer(i); @@ -178,4 +188,10 @@ template class ModelToINetworkConverter<hal_1_1::HalPolicy>; template class ModelToINetworkConverter<hal_1_2::HalPolicy>; #endif +#ifdef ARMNN_ANDROID_NN_V1_3 +template class ModelToINetworkConverter<hal_1_1::HalPolicy>; +template class ModelToINetworkConverter<hal_1_2::HalPolicy>; +template class ModelToINetworkConverter<hal_1_3::HalPolicy>; +#endif + } // armnn_driver |