aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Runtime.cpp
diff options
context:
space:
mode:
authorFinn Williams <finwil01@e127804.cambridge.arm.com>2021-10-02 15:06:39 +0100
committerFinn Williams <finwil01@e127804.cambridge.arm.com>2021-10-08 15:42:14 +0100
commit8636bc705cc33fd869f64ebf24b14836d5a40b29 (patch)
treee546319af87596d053c75d65eedd1efb1f946228 /src/armnn/Runtime.cpp
parent521032fd424cf86681eb125afbf5eaee47d8c585 (diff)
downloadarmnn-8636bc705cc33fd869f64ebf24b14836d5a40b29.tar.gz
IVGCVSW-6313 Support pre-importing outputs
* Add ClearImportedInputs/Outputs function to IRuntime * Add UnImport function to ITensorHandle * Remove mutex from IWorkingMemHandle Change-Id: I34c9b6e1618755e10f3b4597afa1d9a9ea97e5fe Signed-off-by: Finn Williams <finwil01@e127804.cambridge.arm.com>
Diffstat (limited to 'src/armnn/Runtime.cpp')
-rw-r--r--src/armnn/Runtime.cpp39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp
index 50068ebe36..a54b71225d 100644
--- a/src/armnn/Runtime.cpp
+++ b/src/armnn/Runtime.cpp
@@ -82,6 +82,19 @@ std::vector<ImportedInputId> IRuntime::ImportInputs(NetworkId networkId, const I
return pRuntimeImpl->ImportInputs(networkId, inputTensors);
}
+std::vector<ImportedOutputId> IRuntime::ImportOutputs(NetworkId networkId, const OutputTensors& outputTensors)
+{
+ return pRuntimeImpl->ImportOutputs(networkId, outputTensors);
+}
+
+void IRuntime::ClearImportedInputs(NetworkId networkId, const std::vector<ImportedInputId> inputIds)
+{
+ return pRuntimeImpl->ClearImportedInputs(networkId, inputIds);
+}
+void IRuntime::ClearImportedOutputs(NetworkId networkId, const std::vector<ImportedOutputId> outputIds)
+{
+ return pRuntimeImpl->ClearImportedOutputs(networkId, outputIds);
+}
Status IRuntime::EnqueueWorkload(NetworkId networkId,
const InputTensors& inputTensors,
@@ -93,9 +106,10 @@ Status IRuntime::EnqueueWorkload(NetworkId networkId,
Status IRuntime::Execute(IWorkingMemHandle& workingMemHandle,
const InputTensors& inputTensors,
const OutputTensors& outputTensors,
- std::vector<ImportedInputId> preImportedInputs)
+ std::vector<ImportedInputId> preImportedInputs,
+ std::vector<ImportedOutputId> preImportedOutputs)
{
- return pRuntimeImpl->Execute(workingMemHandle, inputTensors, outputTensors, preImportedInputs);
+ return pRuntimeImpl->Execute(workingMemHandle, inputTensors, outputTensors, preImportedInputs, preImportedOutputs);
}
Status IRuntime::UnloadNetwork(NetworkId networkId)
@@ -528,7 +542,19 @@ std::vector<ImportedInputId> RuntimeImpl::ImportInputs(NetworkId networkId, cons
return GetLoadedNetworkPtr(networkId)->ImportInputs(inputTensors);
}
+std::vector<ImportedOutputId> RuntimeImpl::ImportOutputs(NetworkId networkId, const OutputTensors& outputTensors)
+{
+ return GetLoadedNetworkPtr(networkId)->ImportOutputs(outputTensors);
+}
+void RuntimeImpl::ClearImportedInputs(NetworkId networkId, const std::vector<ImportedInputId> inputIds)
+{
+ return GetLoadedNetworkPtr(networkId)->ClearImportedInputs(inputIds);
+}
+void RuntimeImpl::ClearImportedOutputs(NetworkId networkId, const std::vector<ImportedOutputId> outputIds)
+{
+ return GetLoadedNetworkPtr(networkId)->ClearImportedOutputs(outputIds);
+}
Status RuntimeImpl::EnqueueWorkload(NetworkId networkId,
const InputTensors& inputTensors,
@@ -566,7 +592,8 @@ Status RuntimeImpl::EnqueueWorkload(NetworkId networkId,
Status RuntimeImpl::Execute(IWorkingMemHandle& iWorkingMemHandle,
const InputTensors& inputTensors,
const OutputTensors& outputTensors,
- std::vector<ImportedInputId> preImportedInputs)
+ std::vector<ImportedInputId> preImportedInputs,
+ std::vector<ImportedOutputId> preImportedOutputs)
{
NetworkId networkId = iWorkingMemHandle.GetNetworkId();
LoadedNetwork* loadedNetwork = GetLoadedNetworkPtr(networkId);
@@ -585,7 +612,11 @@ Status RuntimeImpl::Execute(IWorkingMemHandle& iWorkingMemHandle,
ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Execute");
- return loadedNetwork->Execute(inputTensors, outputTensors, iWorkingMemHandle, preImportedInputs);
+ return loadedNetwork->Execute(inputTensors,
+ outputTensors,
+ iWorkingMemHandle,
+ preImportedInputs,
+ preImportedOutputs);
}
/// Create a new unique WorkingMemHandle object. Create multiple handles if you wish to have