// // Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include #include #include #include #include using namespace armnn; TEST_SUITE("GpuFsaLayerSupport") { TEST_CASE("IsLayerSupportedGpuFsaConv2d") { TensorInfo inputInfo ({ 1, 5, 5, 1 }, DataType::Float32); TensorInfo outputInfo({ 1, 3, 3, 1 }, DataType::Float32); TensorInfo weightsInfo({ 1, 3, 3, 1 }, DataType::Float32, 0.0f, 0, true); TensorInfo biasesInfo ({ 1 }, DataType::Float32, 0.0f, 0, true); Convolution2dDescriptor desc; desc.m_BiasEnabled = true; desc.m_DataLayout = DataLayout::NHWC; GpuFsaLayerSupport supportChecker; std::string reasonIfNotSupported; auto supported = supportChecker.IsLayerSupported(LayerType::Convolution2d, {inputInfo, outputInfo, weightsInfo, biasesInfo}, desc, EmptyOptional(), EmptyOptional(), reasonIfNotSupported); CHECK(supported); } TEST_CASE("IsLayerSupportedGpuFsaConv2dUnsupported") { TensorInfo inputInfo ({ 1, 5, 5, 1 }, DataType::Float32); TensorInfo outputInfo({ 1, 3, 3, 1 }, DataType::Float32); TensorInfo weightsInfo({ 1, 3, 3, 1 }, DataType::Float32, 0.0f, 0, true); // NCHW is unsupported. Convolution2dDescriptor desc; desc.m_DataLayout = DataLayout::NCHW; GpuFsaLayerSupport supportChecker; std::string reasonIfNotSupported; auto supported = supportChecker.IsLayerSupported(LayerType::Convolution2d, {inputInfo, outputInfo, weightsInfo, TensorInfo()}, desc, EmptyOptional(), EmptyOptional(), reasonIfNotSupported); CHECK(!supported); REQUIRE(reasonIfNotSupported.find("NCHW not supported by this kernel") != std::string::npos); } }