diff options
author | SiCong Li <sicong.li@arm.com> | 2023-05-19 14:23:37 +0100 |
---|---|---|
committer | SiCong Li <sicong.li@arm.com> | 2023-06-19 15:52:40 +0000 |
commit | a8d80583c3b3faa338127ddb9019b6d1085a69ae (patch) | |
tree | 91bcfbf974fdac82b68030ce65e1f9b59fb60877 /tests/validation/fixtures/MatMulKernelFixture.h | |
parent | 94abde4f4e98f6f1adb5c46b194527f34a8ea07d (diff) | |
download | ComputeLibrary-a8d80583c3b3faa338127ddb9019b6d1085a69ae.tar.gz |
Implement FP32/FP16 MatMul NT/NT kernel using the MMUL extension
Resolves COMPMID-6194
Signed-off-by: SiCong Li <sicong.li@arm.com>
Change-Id: Ie45e2aa9533948b2e5235563cef1d3834494eccf
Signed-off-by: SiCong Li <sicong.li@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9739
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation/fixtures/MatMulKernelFixture.h')
-rw-r--r-- | tests/validation/fixtures/MatMulKernelFixture.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/tests/validation/fixtures/MatMulKernelFixture.h b/tests/validation/fixtures/MatMulKernelFixture.h index 7d0b1a40a9..59bcfe5b2d 100644 --- a/tests/validation/fixtures/MatMulKernelFixture.h +++ b/tests/validation/fixtures/MatMulKernelFixture.h @@ -47,7 +47,7 @@ namespace validation { using namespace arm_compute::opencl::kernels; -template <typename T, typename KernelType> +template <typename T, typename KernelType, bool use_mmul = false> class MatMulKernelValidationFixture : public framework::Fixture { public: @@ -94,13 +94,25 @@ public: permute(shape_b, PermutationVector(1U, 0U)); } + // Skip configurations unsupported by the device. _device_supports_export_to_cl_image = image2d_from_buffer_supported(CLKernelLibrary::get().get_device()); + if(!_device_supports_export_to_cl_image && export_rhs_to_cl_image) + { + ARM_COMPUTE_TEST_INFO("cl_khr_image2d_from_buffer not supported. TEST skipped"); + framework::ARM_COMPUTE_PRINT_INFO(); + return; // Note: Also need to skip the validate in corresponding FIXTURE_DATA_TEST_CASEs. + } - if(!export_rhs_to_cl_image || _device_supports_export_to_cl_image) + _device_supports_mmul = arm_matrix_multiply_supported(CLKernelLibrary::get().get_device()); + if(!_device_supports_mmul && use_mmul) { - _target = compute_target(shape_a, shape_b, output_shape, pretranspose_a, pretranspose_b, M0, N0, K0, export_rhs_to_cl_image, data_type, lhs_q_info, rhs_q_info, dst_q_info); - _reference = compute_reference(shape_a, shape_b, output_shape, pretranspose_a, pretranspose_b, data_type, lhs_q_info, rhs_q_info, dst_q_info); + ARM_COMPUTE_TEST_INFO("cl_arm_matrix_multiply not supported. TEST skipped"); + framework::ARM_COMPUTE_PRINT_INFO(); + return; // Note: Also need to skip the validate in corresponding FIXTURE_DATA_TEST_CASEs. } + + _target = compute_target(shape_a, shape_b, output_shape, pretranspose_a, pretranspose_b, M0, N0, K0, export_rhs_to_cl_image, data_type, lhs_q_info, rhs_q_info, dst_q_info); + _reference = compute_reference(shape_a, shape_b, output_shape, pretranspose_a, pretranspose_b, data_type, lhs_q_info, rhs_q_info, dst_q_info); } protected: @@ -274,6 +286,7 @@ protected: CLTensor _target{}; SimpleTensor<T> _reference{}; bool _device_supports_export_to_cl_image{ true }; + bool _device_supports_mmul{ true }; }; } // namespace validation |