diff options
author | Finn Williams <finn.williams@arm.com> | 2022-03-02 12:45:44 +0000 |
---|---|---|
committer | Kevin May <kevin.may@arm.com> | 2022-03-09 09:16:05 +0000 |
commit | de1cd79500a3e6b8744d00fbf54abaae741d881f (patch) | |
tree | 937d04f0be6ce81e67d105a700ca5320ee676ae1 /shim/sl/canonical/ArmnnPreparedModel.cpp | |
parent | 998a20832fd511de75c2cd935b7a0e851e91156d (diff) | |
download | armnn-de1cd79500a3e6b8744d00fbf54abaae741d881f.tar.gz |
Add patch to support mapping ashmem and fix error handling
Signed-off-by: Kevin May <kevin.may@arm.com>
Signed-off-by: Finn Williams <finn.williams@arm.com>
Change-Id: I8ff912691c4d197d398c22c3e08288d0d0fd7e0a
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 )); } |