From 00c440272872b341d2edd114423f34dd85fdd151 Mon Sep 17 00:00:00 2001 From: wuchenghui Date: Fri, 30 Mar 2018 16:40:53 +0800 Subject: [PATCH] fix hexagon run --- mace/core/mace.cc | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mace/core/mace.cc b/mace/core/mace.cc index 49066049..98b0190d 100644 --- a/mace/core/mace.cc +++ b/mace/core/mace.cc @@ -145,8 +145,8 @@ MaceStatus MaceEngine::Impl::Run( std::map *outputs, RunMetadata *run_metadata) { MACE_CHECK_NOTNULL(outputs); - MACE_CHECK(device_type_ != HEXAGON || outputs->size() <= 1, - "HEXAGON not supports multiple outputs now"); + std::vector input_tensors; + std::vector output_tensors; for (auto &input : inputs) { Tensor *input_tensor = ws_->GetTensor(MakeString("mace_input_node_", input.first, ":0")); @@ -157,9 +157,21 @@ MaceStatus MaceEngine::Impl::Run( memcpy(input_data, input.second.data().get(), input_tensor->size() * sizeof(float)); } + input_tensors.push_back(input_tensor); } - if (!net_->Run(run_metadata)) { - LOG(FATAL) << "Net run failed"; + for (auto &output : *outputs) { + Tensor *output_tensor = + ws_->GetTensor(MakeString("mace_output_node_", output.first + ":0")); + output_tensors.push_back(output_tensor); + } + if (device_type_ == HEXAGON) { + MACE_CHECK(input_tensors.size() == 1 && output_tensors.size() == 1, + "HEXAGON not support multiple inputs and outputs yet."); + hexagon_controller_->ExecuteGraph(*input_tensors[0], output_tensors[0]); + } else { + if (!net_->Run(run_metadata)) { + LOG(FATAL) << "Net run failed"; + } } for (auto &output : *outputs) { Tensor *output_tensor = -- GitLab