aboutsummaryrefslogtreecommitdiff
path: root/src/backends/cl/test/ClImportTensorHandleTests.cpp
diff options
context:
space:
mode:
authorColm Donelan <colm.donelan@arm.com>2022-07-06 12:09:05 +0100
committerNikhil Raj <nikhil.raj@arm.com>2022-07-27 15:56:33 +0100
commitd7ceec59ce45f690deba2c0d452ec91fabbdadf9 (patch)
treeddea3d4092d1d9df21a751bf8cf1750c746ad644 /src/backends/cl/test/ClImportTensorHandleTests.cpp
parent9d9dd223ba9fbc509ea8ff1c211d3c63943a5989 (diff)
downloadarmnn-d7ceec59ce45f690deba2c0d452ec91fabbdadf9.tar.gz
IVGCVSW-6896 Fix pre-import when using sync execute.
* Refactor backend capability checks in LoadedNetwork. * ImportInputs should check the number of tensors does not exceed the number of inputs. * In EnqueueWorkload the check for for the count of input tensors was ignoring pre-imported inputs. * Added checks to verify ImportInputs/ImportOutputs worked as expected in EndToEndTestImpl. * Improve documentation on ImportInputs/ImportOutputs in IRuntime.hpp. * Disabled import tests in CL and Neon EndToEndTests that cannot work. Signed-off-by: Colm Donelan <colm.donelan@arm.com> Change-Id: Iae4b2644a1c9f01ee72bce1afb211661cc9ae2e3
Diffstat (limited to 'src/backends/cl/test/ClImportTensorHandleTests.cpp')
-rw-r--r--src/backends/cl/test/ClImportTensorHandleTests.cpp35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/backends/cl/test/ClImportTensorHandleTests.cpp b/src/backends/cl/test/ClImportTensorHandleTests.cpp
index 9a075d2b7d..1198cade61 100644
--- a/src/backends/cl/test/ClImportTensorHandleTests.cpp
+++ b/src/backends/cl/test/ClImportTensorHandleTests.cpp
@@ -397,11 +397,14 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportConv2dEndToEnd")
INFO("Run ImportInputs");
std::vector<ImportedInputId> importedInputIds =
runtime->ImportInputs(netId, inputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedInputIds.size() == 1);
std::vector<ImportedOutputId> importedOutputIds =
runtime->ImportOutputs(netId, outputTensors, MemorySource::Malloc);
-
+ // We expect the import to have succeeded.
+ CHECK(importedOutputIds.size() == 1);
// Do the inference
- runtime->EnqueueWorkload(netId, inputTensors, outputTensors, importedInputIds, importedOutputIds);
+ runtime->EnqueueWorkload(netId, InputTensors(), OutputTensors(), importedInputIds, importedOutputIds);
// Retrieve the Profiler.Print() output to get the workload execution
ProfilerManager& profilerManager = armnn::ProfilerManager::GetInstance();
@@ -536,11 +539,15 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportConvertFp16toFp32EndToE
INFO("Run ImportInputs");
std::vector<ImportedInputId> importedInputIds =
runtime->ImportInputs(netId, inputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedInputIds.size() == 1);
std::vector<ImportedOutputId> importedOutputIds =
runtime->ImportOutputs(netId, outputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedOutputIds.size() == 1);
// Do the inference
- runtime->EnqueueWorkload(netId, inputTensors, outputTensors, importedInputIds, importedOutputIds);
+ runtime->EnqueueWorkload(netId, InputTensors(), OutputTensors(), importedInputIds, importedOutputIds);
// Retrieve the Profiler.Print() output to get the workload execution
ProfilerManager& profilerManager = armnn::ProfilerManager::GetInstance();
@@ -680,11 +687,15 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportConvertFp32toFp16EndToE
INFO("Run ImportInputs");
std::vector<ImportedInputId> importedInputIds =
runtime->ImportInputs(netId, inputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedInputIds.size() == 1);
std::vector<ImportedOutputId> importedOutputIds =
runtime->ImportOutputs(netId, outputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedOutputIds.size() == 1);
// Do the inference
- runtime->EnqueueWorkload(netId, inputTensors, outputTensors, importedInputIds, importedOutputIds);
+ runtime->EnqueueWorkload(netId, InputTensors(), OutputTensors(), importedInputIds, importedOutputIds);
// Retrieve the Profiler.Print() output to get the workload execution
ProfilerManager& profilerManager = armnn::ProfilerManager::GetInstance();
@@ -798,11 +809,13 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportSimpleConvertFp32toFp16
INFO("Run ImportInputs");
std::vector<ImportedInputId> importedInputIds =
runtime->ImportInputs(netId, inputTensors, MemorySource::Malloc);
+ CHECK(importedInputIds.size() == 1);
std::vector<ImportedOutputId> importedOutputIds =
runtime->ImportOutputs(netId, outputTensors, MemorySource::Malloc);
+ CHECK(importedOutputIds.size() == 1);
// Do the inference
- runtime->EnqueueWorkload(netId, inputTensors, outputTensors, importedInputIds, importedOutputIds);
+ runtime->EnqueueWorkload(netId, InputTensors(), OutputTensors(), importedInputIds, importedOutputIds);
// Retrieve the Profiler.Print() output to get the workload execution
ProfilerManager& profilerManager = armnn::ProfilerManager::GetInstance();
@@ -838,7 +851,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportRepeatedInferencesEndTo
/*
* This is a test to check the functionality of the Forced Import functionality when using repeated inferences that
* require switching from importing to copy. For the first inference we create aligned Pointers and check they are
- * imported correctly. For the second we use similar pointers but don't use PreImporting to force fall back to copy.
+ * imported correctly. For the second we use similar pointers but don't use PreImporting.
*/
// Create runtime in which test will run
IRuntime::CreationOptions options;
@@ -959,11 +972,15 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportRepeatedInferencesEndTo
INFO("Run ImportInputs");
std::vector<ImportedInputId> importedInputIds =
runtime->ImportInputs(netId, inputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedInputIds.size() == 1);
std::vector<ImportedOutputId> importedOutputIds =
runtime->ImportOutputs(netId, outputTensors, MemorySource::Malloc);
+ // We expect the import to have succeeded.
+ CHECK(importedOutputIds.size() == 1);
// Do the inference
- runtime->EnqueueWorkload(netId, inputTensors, outputTensors, importedInputIds, importedOutputIds);
+ runtime->EnqueueWorkload(netId, InputTensors(), OutputTensors(), importedInputIds, importedOutputIds);
// Retrieve the Profiler.AnalyzeEventsAndWriteResults() output to get the workload execution
ProfilerManager& profilerManager = armnn::ProfilerManager::GetInstance();
@@ -1246,11 +1263,13 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportRepeatedInferencesInver
INFO("Run ImportInputs");
std::vector<ImportedInputId> importedInputIds =
runtime->ImportInputs(netId, inputTensorsImport, MemorySource::Malloc);
+ CHECK(importedInputIds.size() == 1);
std::vector<ImportedOutputId> importedOutputIds =
runtime->ImportOutputs(netId, outputTensorsImport, MemorySource::Malloc);
+ CHECK(importedOutputIds.size() == 1);
// Do the inference with pre-imported inputs/outputs
- runtime->EnqueueWorkload(netId, inputTensorsImport, outputTensorsImport, importedInputIds, importedOutputIds);
+ runtime->EnqueueWorkload(netId, InputTensors(), OutputTensors(), importedInputIds, importedOutputIds);
// Sync the outputs so we can read the data
arm_compute::CLScheduler::get().sync();