aboutsummaryrefslogtreecommitdiff
path: root/delegate/src/test/DelegateOptionsTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'delegate/src/test/DelegateOptionsTest.cpp')
-rw-r--r--delegate/src/test/DelegateOptionsTest.cpp372
1 files changed, 0 insertions, 372 deletions
diff --git a/delegate/src/test/DelegateOptionsTest.cpp b/delegate/src/test/DelegateOptionsTest.cpp
deleted file mode 100644
index 98323131f9..0000000000
--- a/delegate/src/test/DelegateOptionsTest.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "DelegateOptionsTestHelper.hpp"
-#include <common/include/ProfilingGuid.hpp>
-#include <armnnUtils/Filesystem.hpp>
-
-namespace armnnDelegate
-{
-
-TEST_SUITE("DelegateOptions")
-{
-
-TEST_CASE ("ArmnnDelegateOptimizerOptionsReduceFp32ToFp16")
-{
- std::stringstream ss;
- {
- StreamRedirector redirect(std::cout, ss.rdbuf());
-
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 1, 2, 3, 4 };
- std::vector<float> divData = { 2, 2, 3, 4 };
- std::vector<float> expectedResult = { 1, 2, 2, 2 };
-
- // Enable ReduceFp32ToFp16
- armnn::OptimizerOptions optimizerOptions(true, true, false, false);
- armnnDelegate::DelegateOptions delegateOptions(backends, optimizerOptions);
-
- DelegateOptionTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
- }
- // ReduceFp32ToFp16 option is enabled
- CHECK(ss.str().find("convert_fp32_to_fp16") != std::string::npos);
- CHECK(ss.str().find("convert_fp16_to_fp32") != std::string::npos);
-}
-
-TEST_CASE ("ArmnnDelegateOptimizerOptionsDebug")
-{
- std::stringstream ss;
- {
- StreamRedirector redirect(std::cout, ss.rdbuf());
-
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 1, 2, 3, 4 };
- std::vector<float> divData = { 2, 2, 3, 4 };
- std::vector<float> expectedResult = { 1, 2, 2, 2 };
-
- // Enable Debug
- armnn::OptimizerOptions optimizerOptions(false, true, false, false);
- armnnDelegate::DelegateOptions delegateOptions(backends, optimizerOptions);
-
- DelegateOptionTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
- }
- // Debug option triggered.
- CHECK(ss.str().find("layerGuid") != std::string::npos);
- CHECK(ss.str().find("layerName") != std::string::npos);
- CHECK(ss.str().find("outputSlot") != std::string::npos);
- CHECK(ss.str().find("shape") != std::string::npos);
- CHECK(ss.str().find("data") != std::string::npos);
-}
-
-TEST_CASE ("ArmnnDelegateOptimizerOptionsDebugFunction")
-{
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 1, 2, 3, 4 };
- std::vector<float> divData = { 2, 2, 3, 4 };
- std::vector<float> expectedResult = { 1, 2, 2, 2 };
-
- // Enable debug with debug callback function
- armnn::OptimizerOptions optimizerOptions(false, true, false, false);
- bool callback = false;
- auto mockCallback = [&](LayerGuid guid, unsigned int slotIndex, armnn::ITensorHandle* tensor)
- {
- armnn::IgnoreUnused(guid);
- armnn::IgnoreUnused(slotIndex);
- armnn::IgnoreUnused(tensor);
- callback = true;
- };
-
- armnn::INetworkProperties networkProperties(false, armnn::MemorySource::Undefined, armnn::MemorySource::Undefined);
- armnnDelegate::DelegateOptions delegateOptions(backends,
- optimizerOptions,
- armnn::EmptyOptional(),
- armnn::Optional<armnn::DebugCallbackFunction>(mockCallback));
-
- CHECK(!callback);
-
- DelegateOptionTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
-
- // Check that the debug callback function was called.
- CHECK(callback);
-}
-
-TEST_CASE ("ArmnnDelegateOptimizerOptionsImport")
-{
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc, armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<uint8_t> inputData = { 1, 2, 3, 4 };
- std::vector<uint8_t> divData = { 2, 2, 3, 4 };
- std::vector<uint8_t> expectedResult = { 1, 2, 2, 2 };
-
- armnn::OptimizerOptions optimizerOptions(false, false, false, true);
- armnnDelegate::DelegateOptions delegateOptions(backends, optimizerOptions);
-
- DelegateOptionTest<uint8_t>(::tflite::TensorType_UINT8,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
-}
-
-TEST_CASE ("ArmnnDelegateStringParsingOptionDisableTfLiteRuntimeFallback")
-{
- std::stringstream stringStream;
- std::vector<std::string> keys { "backends", "debug-data", "disable-tflite-runtime-fallback"};
- std::vector<std::string> values { "CpuRef", "1", "1"};
-
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 0.1f, -2.1f, 3.0f, -4.6f };
- std::vector<float> expectedResult = { 1.0f, -2.0f, 3.0f, -4.0f };
-
- // Create options_keys and options_values char array
- size_t num_options = keys.size();
- std::unique_ptr<const char*> options_keys =
- std::unique_ptr<const char*>(new const char*[num_options + 1]);
- std::unique_ptr<const char*> options_values =
- std::unique_ptr<const char*>(new const char*[num_options + 1]);
- for (size_t i=0; i<num_options; ++i)
- {
- options_keys.get()[i] = keys[i].c_str();
- options_values.get()[i] = values[i].c_str();
- }
-
- StreamRedirector redirect(std::cout, stringStream.rdbuf());
-
- armnnDelegate::DelegateOptions delegateOptions(options_keys.get(), options_values.get(), num_options, nullptr);
- DelegateOptionNoFallbackTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- expectedResult,
- delegateOptions);
- CHECK(stringStream.str().find("TfLiteArmnnDelegate: There are unsupported operators in the model")
- != std::string::npos);
-}
-
-TEST_CASE ("ArmnnDelegateStringParsingOptionEnableTfLiteRuntimeFallback")
-{
- std::stringstream stringStream;
- std::vector<std::string> keys { "backends", "debug-data", "disable-tflite-runtime-fallback"};
- std::vector<std::string> values { "CpuRef", "1", "0"};
-
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 0.1f, -2.1f, 3.0f, -4.6f };
- std::vector<float> expectedResult = { 1.0f, -2.0f, 3.0f, -4.0f };
-
- // Create options_keys and options_values char array
- size_t num_options = keys.size();
- std::unique_ptr<const char*> options_keys =
- std::unique_ptr<const char*>(new const char*[num_options + 1]);
- std::unique_ptr<const char*> options_values =
- std::unique_ptr<const char*>(new const char*[num_options + 1]);
- for (size_t i=0; i<num_options; ++i)
- {
- options_keys.get()[i] = keys[i].c_str();
- options_values.get()[i] = values[i].c_str();
- }
-
- StreamRedirector redirect(std::cout, stringStream.rdbuf());
-
- armnnDelegate::DelegateOptions delegateOptions(options_keys.get(), options_values.get(), num_options, nullptr);
- DelegateOptionNoFallbackTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- expectedResult,
- delegateOptions);
-
- CHECK(stringStream.str().find("TfLiteArmnnDelegate: There are unsupported operators in the model")
- == std::string::npos);
-}
-
-}
-
-TEST_SUITE("DelegateOptions_CpuAccTests")
-{
-
-TEST_CASE ("ArmnnDelegateModelOptions_CpuAcc_Test")
-{
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 1, 2, 3, 4 };
- std::vector<float> divData = { 2, 2, 3, 4 };
- std::vector<float> expectedResult = { 1, 2, 2, 2 };
-
- unsigned int numberOfThreads = 2;
-
- armnn::ModelOptions modelOptions;
- armnn::BackendOptions cpuAcc("CpuAcc",
- {
- { "FastMathEnabled", true },
- { "NumberOfThreads", numberOfThreads }
- });
- modelOptions.push_back(cpuAcc);
-
- armnn::OptimizerOptions optimizerOptions(false, false, false, false, modelOptions, false);
- armnnDelegate::DelegateOptions delegateOptions(backends, optimizerOptions);
-
- DelegateOptionTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
-}
-
-TEST_CASE ("ArmnnDelegateSerializeToDot")
-{
- const fs::path filename(fs::temp_directory_path() / "ArmnnDelegateSerializeToDot.dot");
- if ( fs::exists(filename) )
- {
- fs::remove(filename);
- }
- std::stringstream ss;
- {
- StreamRedirector redirect(std::cout, ss.rdbuf());
-
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 1, 2, 3, 4 };
- std::vector<float> divData = { 2, 2, 3, 4 };
- std::vector<float> expectedResult = { 1, 2, 2, 2 };
-
- armnn::OptimizerOptions optimizerOptions(false, false, false, false);
- armnnDelegate::DelegateOptions delegateOptions(backends, optimizerOptions);
- // Enable serialize to dot by specifying the target file name.
- delegateOptions.SetSerializeToDot(filename);
- DelegateOptionTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
- }
- CHECK(fs::exists(filename));
- // The file should have a size greater than 0 bytes.
- CHECK(fs::file_size(filename) > 0);
- // Clean up.
- fs::remove(filename);
-}
-
-void CreateFp16StringParsingTestRun(std::vector<std::string>& keys,
- std::vector<std::string>& values,
- std::stringstream& ss)
-{
- StreamRedirector redirect(std::cout, ss.rdbuf());
-
- std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
- std::vector<int32_t> tensorShape { 1, 2, 2, 1 };
- std::vector<float> inputData = { 1, 2, 3, 4 };
- std::vector<float> divData = { 2, 2, 3, 4 };
- std::vector<float> expectedResult = { 1, 2, 2, 2 };
-
- // Create options_keys and options_values char array
- size_t num_options = keys.size();
- std::unique_ptr<const char*> options_keys =
- std::unique_ptr<const char*>(new const char*[num_options + 1]);
- std::unique_ptr<const char*> options_values =
- std::unique_ptr<const char*>(new const char*[num_options + 1]);
- for (size_t i=0; i<num_options; ++i)
- {
- options_keys.get()[i] = keys[i].c_str();
- options_values.get()[i] = values[i].c_str();
- }
-
- armnnDelegate::DelegateOptions delegateOptions(options_keys.get(), options_values.get(), num_options, nullptr);
- DelegateOptionTest<float>(::tflite::TensorType_FLOAT32,
- backends,
- tensorShape,
- inputData,
- inputData,
- divData,
- expectedResult,
- delegateOptions);
-}
-
-TEST_CASE ("ArmnnDelegateStringParsingOptionReduceFp32ToFp16")
-{
- SUBCASE("Fp16=1")
- {
- std::stringstream ss;
- std::vector<std::string> keys { "backends", "debug-data", "reduce-fp32-to-fp16", "logging-severity"};
- std::vector<std::string> values { "CpuRef", "1", "1", "info"};
- CreateFp16StringParsingTestRun(keys, values, ss);
- CHECK(ss.str().find("convert_fp32_to_fp16") != std::string::npos);
- CHECK(ss.str().find("convert_fp16_to_fp32") != std::string::npos);
- }
- SUBCASE("Fp16=true")
- {
- std::stringstream ss;
- std::vector<std::string> keys { "backends", "debug-data", "reduce-fp32-to-fp16"};
- std::vector<std::string> values { "CpuRef", "TRUE", "true"};
- CreateFp16StringParsingTestRun(keys, values, ss);
- CHECK(ss.str().find("convert_fp32_to_fp16") != std::string::npos);
- CHECK(ss.str().find("convert_fp16_to_fp32") != std::string::npos);
- }
- SUBCASE("Fp16=True")
- {
- std::stringstream ss;
- std::vector<std::string> keys { "backends", "debug-data", "reduce-fp32-to-fp16"};
- std::vector<std::string> values { "CpuRef", "true", "True"};
- CreateFp16StringParsingTestRun(keys, values, ss);
- CHECK(ss.str().find("convert_fp32_to_fp16") != std::string::npos);
- CHECK(ss.str().find("convert_fp16_to_fp32") != std::string::npos);
- }
- SUBCASE("Fp16=0")
- {
- std::stringstream ss;
- std::vector<std::string> keys { "backends", "debug-data", "reduce-fp32-to-fp16"};
- std::vector<std::string> values { "CpuRef", "true", "0"};
- CreateFp16StringParsingTestRun(keys, values, ss);
- CHECK(ss.str().find("convert_fp32_to_fp16") == std::string::npos);
- CHECK(ss.str().find("convert_fp16_to_fp32") == std::string::npos);
- }
- SUBCASE("Fp16=false")
- {
- std::stringstream ss;
- std::vector<std::string> keys { "backends", "debug-data", "reduce-fp32-to-fp16"};
- std::vector<std::string> values { "CpuRef", "1", "false"};
- CreateFp16StringParsingTestRun(keys, values, ss);
- CHECK(ss.str().find("convert_fp32_to_fp16") == std::string::npos);
- CHECK(ss.str().find("convert_fp16_to_fp32") == std::string::npos);
- }
-}
-
-}
-
-} // namespace armnnDelegate