aboutsummaryrefslogtreecommitdiff
path: root/shim/sl/canonical/ArmnnPreparedModel.cpp
diff options
context:
space:
mode:
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 ));
}