aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp')
-rw-r--r--src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp141
1 files changed, 94 insertions, 47 deletions
diff --git a/src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp
index 9226f215aa..fa9a825313 100644
--- a/src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/DebugTestImpl.cpp
@@ -6,15 +6,16 @@
#include "DebugTestImpl.hpp"
#include <armnnUtils/QuantizeHelper.hpp>
+#include <armnnUtils/Filesystem.hpp>
#include <ResolveType.hpp>
-
#include <armnnTestUtils/TensorCopyUtils.hpp>
#include <armnnTestUtils/WorkloadTestUtils.hpp>
#include <armnnTestUtils/TensorHelpers.hpp>
#include <doctest/doctest.h>
+#include <armnnUtils/Filesystem.hpp>
namespace
{
@@ -29,6 +30,8 @@ LayerTestResult<T, Dim> DebugTestImpl(
std::vector<float>& outputExpectedData,
armnn::DebugQueueDescriptor descriptor,
const std::string expectedStringOutput,
+ const std::string& layerName,
+ bool toFile,
const float qScale = 1.0f,
const int32_t qOffset = 0)
{
@@ -65,15 +68,27 @@ LayerTestResult<T, Dim> DebugTestImpl(
CopyDataToITensorHandle(inputHandle.get(), input.data());
- std::ostringstream oss;
- std::streambuf* coutStreambuf = std::cout.rdbuf();
- std::cout.rdbuf(oss.rdbuf());
+ if (toFile)
+ {
+ fs::path tmpDir = fs::temp_directory_path();
+ std::string full_path = tmpDir.generic_string() + "/ArmNNIntermediateLayerOutputs/" + layerName + ".numpy";
- ExecuteWorkload(*workload, memoryManager);
+ ExecuteWorkload(*workload, memoryManager);
- std::cout.rdbuf(coutStreambuf);
+ armnnUtils::Filesystem::FileContents output = armnnUtils::Filesystem::ReadFileContentsIntoString(full_path);
+ CHECK((output == expectedStringOutput));
+ }
+ else
+ {
+ std::ostringstream oss;
+ std::streambuf* coutStreambuf = std::cout.rdbuf();
+ std::cout.rdbuf(oss.rdbuf());
- CHECK(oss.str() == expectedStringOutput);
+ ExecuteWorkload(*workload, memoryManager);
+
+ std::cout.rdbuf(coutStreambuf);
+ CHECK(oss.str() == expectedStringOutput);
+ }
CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
@@ -86,7 +101,8 @@ LayerTestResult<T, Dim> DebugTestImpl(
template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult<T, 4> Debug4dTest(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
armnn::TensorInfo inputTensorInfo;
armnn::TensorInfo outputTensorInfo;
@@ -98,6 +114,7 @@ LayerTestResult<T, 4> Debug4dTest(
desc.m_Guid = 1;
desc.m_LayerName = "TestOutput";
desc.m_SlotIndex = 0;
+ desc.m_LayerOutputToFile = toFile;
inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
@@ -133,13 +150,16 @@ LayerTestResult<T, 4> Debug4dTest(
input,
outputExpected,
desc,
- expectedStringOutput);
+ expectedStringOutput,
+ desc.m_LayerName,
+ toFile);
}
template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult<T, 3> Debug3dTest(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
armnn::TensorInfo inputTensorInfo;
armnn::TensorInfo outputTensorInfo;
@@ -151,6 +171,7 @@ LayerTestResult<T, 3> Debug3dTest(
desc.m_Guid = 1;
desc.m_LayerName = "TestOutput";
desc.m_SlotIndex = 0;
+ desc.m_LayerOutputToFile = toFile;
inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
@@ -184,13 +205,16 @@ LayerTestResult<T, 3> Debug3dTest(
input,
outputExpected,
desc,
- expectedStringOutput);
+ expectedStringOutput,
+ desc.m_LayerName,
+ toFile);
}
template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult<T, 2> Debug2dTest(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
armnn::TensorInfo inputTensorInfo;
armnn::TensorInfo outputTensorInfo;
@@ -202,6 +226,7 @@ LayerTestResult<T, 2> Debug2dTest(
desc.m_Guid = 1;
desc.m_LayerName = "TestOutput";
desc.m_SlotIndex = 0;
+ desc.m_LayerOutputToFile = toFile;
inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
@@ -233,13 +258,16 @@ LayerTestResult<T, 2> Debug2dTest(
input,
outputExpected,
desc,
- expectedStringOutput);
+ expectedStringOutput,
+ desc.m_LayerName,
+ toFile);
}
template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult<T, 1> Debug1dTest(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
armnn::TensorInfo inputTensorInfo;
armnn::TensorInfo outputTensorInfo;
@@ -251,6 +279,7 @@ LayerTestResult<T, 1> Debug1dTest(
desc.m_Guid = 1;
desc.m_LayerName = "TestOutput";
desc.m_SlotIndex = 0;
+ desc.m_LayerOutputToFile = toFile;
inputTensorInfo = armnn::TensorInfo(1, inputShape, ArmnnType);
outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType);
@@ -280,119 +309,137 @@ LayerTestResult<T, 1> Debug1dTest(
input,
outputExpected,
desc,
- expectedStringOutput);
+ expectedStringOutput,
+ desc.m_LayerName,
+ toFile);
}
} // anonymous namespace
LayerTestResult<float, 4> Debug4dFloat32Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
+ return Debug4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<float, 3> Debug3dFloat32Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
+ return Debug3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<float, 2> Debug2dFloat32Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
+ return Debug2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<float, 1> Debug1dFloat32Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug1dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
+ return Debug1dTest<armnn::DataType::Float32>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<armnn::BFloat16, 4> Debug4dBFloat16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug4dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager);
+ return Debug4dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<armnn::BFloat16, 3> Debug3dBFloat16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug3dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager);
+ return Debug3dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<armnn::BFloat16, 2> Debug2dBFloat16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug2dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager);
+ return Debug2dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<armnn::BFloat16, 1> Debug1dBFloat16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug1dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager);
+ return Debug1dTest<armnn::DataType::BFloat16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<uint8_t, 4> Debug4dUint8Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
+ return Debug4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<uint8_t, 3> Debug3dUint8Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
+ return Debug3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<uint8_t, 2> Debug2dUint8Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
+ return Debug2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<uint8_t, 1> Debug1dUint8Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug1dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
+ return Debug1dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<int16_t, 4> Debug4dInt16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
+ return Debug4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<int16_t, 3> Debug3dInt16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
+ return Debug3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<int16_t, 2> Debug2dInt16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
+ return Debug2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
}
LayerTestResult<int16_t, 1> Debug1dInt16Test(
armnn::IWorkloadFactory& workloadFactory,
- const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool toFile = false)
{
- return Debug1dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
+ return Debug1dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, toFile);
}