aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/fixtures/MatMulKernelFixture.h
diff options
context:
space:
mode:
authorSiCong Li <sicong.li@arm.com>2023-05-19 14:23:37 +0100
committerSiCong Li <sicong.li@arm.com>2023-06-19 15:52:40 +0000
commita8d80583c3b3faa338127ddb9019b6d1085a69ae (patch)
tree91bcfbf974fdac82b68030ce65e1f9b59fb60877 /tests/validation/fixtures/MatMulKernelFixture.h
parent94abde4f4e98f6f1adb5c46b194527f34a8ea07d (diff)
downloadComputeLibrary-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.h21
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