aboutsummaryrefslogtreecommitdiff
path: root/shim/sl/canonical/ArmnnPreparedModel.cpp
diff options
context:
space:
mode:
authorFinn Williams <finn.williams@arm.com>2022-03-02 12:45:44 +0000
committerKevin May <kevin.may@arm.com>2022-03-09 09:16:05 +0000
commitde1cd79500a3e6b8744d00fbf54abaae741d881f (patch)
tree937d04f0be6ce81e67d105a700ca5320ee676ae1 /shim/sl/canonical/ArmnnPreparedModel.cpp
parent998a20832fd511de75c2cd935b7a0e851e91156d (diff)
downloadarmnn-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.cpp26
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 ));
}