21 #include <doctest/doctest.h> 26 using namespace armnn;
31 TEST_CASE(
"NeonTimerGetName")
34 CHECK_EQ(std::string(neonTimer.
GetName()),
"NeonKernelTimer");
37 TEST_CASE(
"NeonTimerMeasure")
40 NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager());
42 unsigned int inputWidth = 2000u;
43 unsigned int inputHeight = 2000u;
44 unsigned int inputChannels = 1u;
45 unsigned int inputBatchSize = 1u;
47 float upperBound = 1.0f;
48 float lowerBound = -1.0f;
50 size_t inputSize = inputWidth * inputHeight * inputChannels * inputBatchSize;
51 std::vector<float> inputData(inputSize, 0.f);
52 std::generate(inputData.begin(), inputData.end(), [](){
53 return (static_cast<float>(rand()) /
static_cast<float>(RAND_MAX / 3)) + 1.f; });
55 unsigned int outputWidth = inputWidth;
56 unsigned int outputHeight = inputHeight;
57 unsigned int outputChannels = inputChannels;
58 unsigned int outputBatchSize = inputBatchSize;
60 armnn::TensorInfo inputTensorInfo({ inputBatchSize, inputChannels, inputHeight, inputWidth },
63 armnn::TensorInfo outputTensorInfo({ outputBatchSize, outputChannels, outputHeight, outputWidth },
67 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputTensorInfo);
68 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
74 AddInputToWorkload(descriptor, workloadInfo, inputTensorInfo, inputHandle.get());
75 AddOutputToWorkload(descriptor, workloadInfo, outputTensorInfo, outputHandle.get());
78 descriptor.m_Parameters.m_A = upperBound;
79 descriptor.m_Parameters.m_B = lowerBound;
81 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateActivation(descriptor, workloadInfo);
83 inputHandle->Allocate();
84 outputHandle->Allocate();
96 std::vector<Measurement> measurements = neonTimer.GetMeasurements();
98 CHECK(measurements.size() <= 2);
99 if (measurements.size() > 1)
101 CHECK_EQ(measurements[0].m_Name,
"NeonKernelTimer/0: NEFillBorderKernel");
102 CHECK(measurements[0].m_Value > 0.0);
104 std::ostringstream oss_neon;
105 std::ostringstream oss_cpu;
106 oss_neon <<
"NeonKernelTimer/" << measurements.size()-1 <<
": NEActivationLayerKernel";
107 oss_cpu <<
"NeonKernelTimer/" << measurements.size()-1 <<
": CpuActivationKernel";
108 bool kernelCheck = ((measurements[measurements.size()-1].m_Name.find(oss_neon.str()) != std::string::npos)
109 || (measurements[measurements.size()-1].m_Name.find(oss_cpu.str()) != std::string::npos));
111 CHECK(measurements[measurements.size()-1].m_Value > 0.0);
TEST_SUITE("TestConstTensorLayerVisitor")
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Copyright (c) 2021 ARM Limited and Contributors.
#define ARMNN_NO_DEPRECATE_WARN_END
min(a, max(b, input)) ReLu1 & ReLu6.
std::unique_ptr< IWorkload > CreateActivation(const ActivationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
const char * GetName() const override
Contains information about TensorInfos of a layer.
std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)