diff options
Diffstat (limited to 'shim/sl/canonical/ArmnnPreparedModel.cpp')
-rw-r--r-- | shim/sl/canonical/ArmnnPreparedModel.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/shim/sl/canonical/ArmnnPreparedModel.cpp b/shim/sl/canonical/ArmnnPreparedModel.cpp index 659a26cf3b..94809497d1 100644 --- a/shim/sl/canonical/ArmnnPreparedModel.cpp +++ b/shim/sl/canonical/ArmnnPreparedModel.cpp @@ -332,7 +332,7 @@ ExecutionResult<std::pair<std::vector<OutputShape>, Timing>> ArmnnPreparedModel: switch(status) { case ErrorStatus::OUTPUT_INSUFFICIENT_SIZE: - return NN_ERROR(ErrorStatus::NONE); + return NN_ERROR(ErrorStatus::OUTPUT_INSUFFICIENT_SIZE); case ErrorStatus::GENERAL_FAILURE: return NN_ERROR(ErrorStatus::GENERAL_FAILURE); case ErrorStatus::INVALID_ARGUMENT: @@ -522,10 +522,6 @@ GeneralResult<std::pair<SyncFence, ExecuteFencedInfoCallback>> ArmnnPreparedMode VLOG(DRIVER) << "ArmnnCanonicalPreparedModel::executeFenced(...) before ExecuteGraph"; auto errorStatus = ExecuteGraph(memPools, *inputs, *outputs, ctx); - if (errorStatus != ErrorStatus::NONE) - { - return NN_ERROR(errorStatus) << "executeFenced() failed"; - } VLOG(DRIVER) << "ArmnnCanonicalPreparedModel::executeFenced(...) after ExecuteGraph"; if (relocation.output) { @@ -533,8 +529,24 @@ GeneralResult<std::pair<SyncFence, ExecuteFencedInfoCallback>> ArmnnPreparedMode } ExecuteFencedInfoCallback armnnFencedExecutionCallback = - [timingSinceLaunch, timingAfterFence]() { - return std::make_pair(timingSinceLaunch, timingAfterFence); + [timingSinceLaunch, timingAfterFence, errorStatus]() { + + GeneralResult<std::pair<Timing, Timing>> result; + + switch(errorStatus) + { + case ErrorStatus::OUTPUT_INSUFFICIENT_SIZE: + result.error().code = (ErrorStatus::OUTPUT_INSUFFICIENT_SIZE); + case ErrorStatus::GENERAL_FAILURE: + result.error().code = (ErrorStatus::GENERAL_FAILURE); + case ErrorStatus::INVALID_ARGUMENT: + result.error().code = (ErrorStatus::INVALID_ARGUMENT); + default: + { + result.value() = std::make_pair(timingSinceLaunch, timingAfterFence); + } + } + return result; }; return std::make_pair(SyncFence::createAsSignaled(), std::move(armnnFencedExecutionCallback )); } |