From b526431b1079a86b30a1bf6e905435e7121584f9 Mon Sep 17 00:00:00 2001 From: Pablo Marquez Tello Date: Tue, 12 Dec 2023 10:09:59 +0000 Subject: Winograd changes to enable fp16 in armv8a multi_isa builds * Changes in filelist.json: moved fp16 code from common to fp16 * Replaced the guard __ARM_FEATURE_FP16_VECTOR_ARITHMETIC with ENABLE_FP16_KERNELS. * Resolves COMPMID-6755 Change-Id: I4da1c53d3f9e4734e5e67125265ab4e3fc0dcbe4 Signed-off-by: Pablo Marquez Tello Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10865 Benchmark: Arm Jenkins Tested-by: Arm Jenkins Reviewed-by: Jakub Sujak Comments-Addressed: Arm Jenkins --- filelist.json | 14 +++++++------- src/cpu/operators/CpuWinogradConv2d.cpp | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/filelist.json b/filelist.json index 3fd48e669c..617b01648f 100644 --- a/filelist.json +++ b/filelist.json @@ -1125,27 +1125,20 @@ "src/core/NEON/kernels/convolution/common/qasymm8.cpp", "src/core/NEON/kernels/convolution/common/qsymm8.cpp", "src/core/NEON/kernels/convolution/common/utils.cpp", - "src/core/NEON/kernels/convolution/winograd/input_transforms_fp16.cpp", "src/core/NEON/kernels/convolution/winograd/input_transforms_fp32.cpp", - "src/core/NEON/kernels/convolution/winograd/output_transforms_fp16.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms_fp32.cpp", - "src/core/NEON/kernels/convolution/winograd/weight_transforms_fp16.cpp", "src/core/NEON/kernels/convolution/winograd/weight_transforms_fp32.cpp", - "src/core/NEON/kernels/convolution/winograd/winograd_fp16.cpp", "src/core/NEON/kernels/convolution/winograd/winograd_fp32.cpp", - "src/core/NEON/kernels/convolution/winograd/input_transforms/a64_fp16_6x6.cpp", "src/core/NEON/kernels/convolution/winograd/input_transforms/a64_fp32_6x6.cpp", "src/core/NEON/kernels/convolution/winograd/input_transforms/arm_fp32_1x8.cpp", "src/core/NEON/kernels/convolution/winograd/input_transforms/arm_fp32_4x4.cpp", "src/core/NEON/kernels/convolution/winograd/input_transforms/arm_fp32_6x6.cpp", - "src/core/NEON/kernels/convolution/winograd/output_transforms/a64_fp16_4x4_3x3.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms/arm_fp32_1x2_1x7.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms/arm_fp32_1x4_1x5.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms/arm_fp32_1x6_1x3.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms/arm_fp32_2x2_3x3.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms/arm_fp32_2x2_5x5.cpp", "src/core/NEON/kernels/convolution/winograd/output_transforms/arm_fp32_4x4_3x3.cpp", - "src/core/NEON/kernels/convolution/winograd/weight_transforms/a64_fp16_4x4_3x3.cpp", "src/core/NEON/kernels/convolution/winograd/weight_transforms/arm_fp32_2x2_3x3.cpp", "src/core/NEON/kernels/convolution/winograd/weight_transforms/arm_fp32_2x2_5x5.cpp", "src/core/NEON/kernels/convolution/winograd/weight_transforms/arm_fp32_4x4_3x3.cpp", @@ -1162,6 +1155,13 @@ ], "fp16": [ "src/cpu/kernels/directconv2d/nchw/fp16.cpp", + "src/core/NEON/kernels/convolution/winograd/winograd_fp16.cpp", + "src/core/NEON/kernels/convolution/winograd/input_transforms_fp16.cpp", + "src/core/NEON/kernels/convolution/winograd/output_transforms_fp16.cpp", + "src/core/NEON/kernels/convolution/winograd/weight_transforms_fp16.cpp", + "src/core/NEON/kernels/convolution/winograd/input_transforms/a64_fp16_6x6.cpp", + "src/core/NEON/kernels/convolution/winograd/output_transforms/a64_fp16_4x4_3x3.cpp", + "src/core/NEON/kernels/convolution/winograd/weight_transforms/a64_fp16_4x4_3x3.cpp", "src/cpu/kernels/directconv2d/nhwc/neon/fp16.cpp" ] }, diff --git a/src/cpu/operators/CpuWinogradConv2d.cpp b/src/cpu/operators/CpuWinogradConv2d.cpp index e4bcdc0b64..7d81aee0e9 100644 --- a/src/cpu/operators/CpuWinogradConv2d.cpp +++ b/src/cpu/operators/CpuWinogradConv2d.cpp @@ -122,13 +122,13 @@ bool get_winograd_kernel_implementation(const ITensorInfo success = arm_conv::winograd::get_implementation(*winograd_impl, &CPUInfo::get(), *conv_args, nthreads, enable_fast_math, &winograd_cfg, nullptr); } -#if defined(__aarch64__) && defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) +#if defined(__aarch64__) && defined(ENABLE_FP16_KERNELS) else if (data_type == DataType::F16) { success = arm_conv::winograd::get_implementation<__fp16>(*winograd_impl, &CPUInfo::get(), *conv_args, nthreads, enable_fast_math, &winograd_cfg, nullptr); } -#endif // defined(__aarch64__) && defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) +#endif // defined(__aarch64__) && defined(ENABLE_FP16_KERNELS) else { success = false; -- cgit v1.2.1