From fa9894e49414974444f6e2b916cf4f30ad9efe79 Mon Sep 17 00:00:00 2001 From: "Hu, Peisen" Date: Tue, 13 Feb 2024 23:20:23 -0800 Subject: [PATCH 1/2] Fix errors for certain spec_constants tests when running in AOT mode Signed-off-by: Hu, Peisen --- .../spec_constants_defined_various_ways.h | 11 +++++--- .../spec_constants/spec_constants_multiple.h | 27 +++++++++++-------- .../spec_constants_same_name_inter_link.h | 21 +++++++++------ .../spec_constants_same_name_stress.h | 21 +++++++++------ 4 files changed, 50 insertions(+), 30 deletions(-) diff --git a/tests/spec_constants/spec_constants_defined_various_ways.h b/tests/spec_constants/spec_constants_defined_various_ways.h index 50a314b08..762c016eb 100644 --- a/tests/spec_constants/spec_constants_defined_various_ways.h +++ b/tests/spec_constants/spec_constants_defined_various_ways.h @@ -27,6 +27,7 @@ void perform_test(util::logger &log, const std::string &type_name, auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); + bool no_target_kernel = false; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -50,6 +51,7 @@ void perform_test(util::logger &log, const std::string &type_name, sycl::get_kernel_bundle(ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { + no_target_kernel = true; log.note("kernel_bundle doesn't contain target kernel in case (" + case_hint + ") for " + type_name_string::get(type_name) + " (skipped)"); @@ -72,9 +74,12 @@ void perform_test(util::logger &log, const std::string &type_name, } }); } - if (!check_equal_values(ref, result)) - FAIL(log, - "case (" + case_hint + ") for " + type_name_string::get(type_name)); + if (!no_target_kernel) { + // Check results only if taget kernel is available + if (!check_equal_values(ref, result)) + FAIL(log, "case (" + case_hint + ") for " + + type_name_string::get(type_name)); + } } template diff --git a/tests/spec_constants/spec_constants_multiple.h b/tests/spec_constants/spec_constants_multiple.h index 1396f9567..2322d9f65 100644 --- a/tests/spec_constants/spec_constants_multiple.h +++ b/tests/spec_constants/spec_constants_multiple.h @@ -47,6 +47,7 @@ class check_specialization_constants_multiple_for_type { auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); + bool no_target_kernel = false; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -77,6 +78,7 @@ class check_specialization_constants_multiple_for_type { sycl::get_kernel_bundle(ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { + no_target_kernel = true; log.note( "kernel_bundle doesn't contain target kernel;" "multiple spec const for " + @@ -111,17 +113,20 @@ class check_specialization_constants_multiple_for_type { } }); } - if (!check_equal_values(ref1, result_vec[0].value) || - !check_equal_values(ref2, result_vec[1].value) || - !check_equal_values(ref3, result_vec[2].value) || - !check_equal_values(user_def_types::get_init_value(def_values[3]), - result_vec[3].value) || - !check_equal_values(user_def_types::get_init_value(def_values[4]), - result_vec[4].value) || - !check_equal_values(user_def_types::get_init_value(def_values[5]), - result_vec[5].value)) - FAIL(log, - "multiple spec const for " + type_name_string::get(type_name)); + if (!no_target_kernel) { + // Check results only if taget kernel is available + if (!check_equal_values(ref1, result_vec[0].value) || + !check_equal_values(ref2, result_vec[1].value) || + !check_equal_values(ref3, result_vec[2].value) || + !check_equal_values(user_def_types::get_init_value(def_values[3]), + result_vec[3].value) || + !check_equal_values(user_def_types::get_init_value(def_values[4]), + result_vec[4].value) || + !check_equal_values(user_def_types::get_init_value(def_values[5]), + result_vec[5].value)) + FAIL(log, + "multiple spec const for " + type_name_string::get(type_name)); + } } }; diff --git a/tests/spec_constants/spec_constants_same_name_inter_link.h b/tests/spec_constants/spec_constants_same_name_inter_link.h index 0f6b70376..07ae635f0 100644 --- a/tests/spec_constants/spec_constants_same_name_inter_link.h +++ b/tests/spec_constants/spec_constants_same_name_inter_link.h @@ -40,6 +40,7 @@ class check_specialization_constants_same_name_inter_link_for_type { auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); + bool no_target_kernel = false; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -67,6 +68,7 @@ class check_specialization_constants_same_name_inter_link_for_type { sycl::get_kernel_bundle(ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { + no_target_kernel = true; log.note("kernel_bundle doesn't contain target kernel for " + type_name_string::get(type_name) + " (skipped)"); return; @@ -93,14 +95,17 @@ class check_specialization_constants_same_name_inter_link_for_type { } }); } - if (!check_equal_values(ref_def_value, def_value)) - FAIL(log, "Wrong linked spec const; (translation unit " + - std::to_string(TestConfig::tu) + ") for " + - type_name_string::get(type_name)); - if (!check_equal_values(ref, result)) - FAIL(log, "Wrong returned value; (translation unit " + - std::to_string(TestConfig::tu) + ") for " + - type_name_string::get(type_name)); + if (!no_target_kernel) { + // Check results only if taget kernel is available + if (!check_equal_values(ref_def_value, def_value)) + FAIL(log, "Wrong linked spec const; (translation unit " + + std::to_string(TestConfig::tu) + ") for " + + type_name_string::get(type_name)); + if (!check_equal_values(ref, result)) + FAIL(log, "Wrong returned value; (translation unit " + + std::to_string(TestConfig::tu) + ") for " + + type_name_string::get(type_name)); + } } } catch (...) { std::string message{"translation unit " + std::to_string(TestConfig::tu) + diff --git a/tests/spec_constants/spec_constants_same_name_stress.h b/tests/spec_constants/spec_constants_same_name_stress.h index fc03b0a2d..8fadbe889 100644 --- a/tests/spec_constants/spec_constants_same_name_stress.h +++ b/tests/spec_constants/spec_constants_same_name_stress.h @@ -47,6 +47,7 @@ class check_specialization_constants_same_name_stress_for_type { auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); + bool no_target_kernel = false; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -149,6 +150,7 @@ class check_specialization_constants_same_name_stress_for_type { auto k_bundle = sycl::get_kernel_bundle( ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { + no_target_kernel = true; log.note("kernel_bundle doesn't contain target kernel for " + type_name_string::get(type_name) + " (skipped)"); return; @@ -160,14 +162,17 @@ class check_specialization_constants_same_name_stress_for_type { } }); } - for (int i = 0; i < size; ++i) { - if (!check_equal_values(def_values_arr[i], ref_def_values_arr[i])) { - FAIL(log, "Wrong default value for spec const defined in " + - get_hint(i) + " for type " + type_name); - } - if (!check_equal_values(result_arr[i], ref_arr[i])) { - FAIL(log, "Wrong result value for spec const defined in " + - get_hint(i) + "for type " + type_name); + if (!no_target_kernel) { + // Check results only if taget kernel is available + for (int i = 0; i < size; ++i) { + if (!check_equal_values(def_values_arr[i], ref_def_values_arr[i])) { + FAIL(log, "Wrong default value for spec const defined in " + + get_hint(i) + " for type " + type_name); + } + if (!check_equal_values(result_arr[i], ref_arr[i])) { + FAIL(log, "Wrong result value for spec const defined in " + + get_hint(i) + "for type " + type_name); + } } } } catch (...) { From 500631325cc6c1416a89684ebff84421b147709c Mon Sep 17 00:00:00 2001 From: "Hu, Peisen" Date: Wed, 14 Feb 2024 11:37:34 -0800 Subject: [PATCH 2/2] Addressing comments Signed-off-by: Hu, Peisen --- .../spec_constants/spec_constants_defined_various_ways.h | 8 ++++---- tests/spec_constants/spec_constants_multiple.h | 8 ++++---- .../spec_constants/spec_constants_same_name_inter_link.h | 8 ++++---- tests/spec_constants/spec_constants_same_name_stress.h | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/spec_constants/spec_constants_defined_various_ways.h b/tests/spec_constants/spec_constants_defined_various_ways.h index 762c016eb..d4d14e45c 100644 --- a/tests/spec_constants/spec_constants_defined_various_ways.h +++ b/tests/spec_constants/spec_constants_defined_various_ways.h @@ -27,7 +27,7 @@ void perform_test(util::logger &log, const std::string &type_name, auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); - bool no_target_kernel = false; + bool has_target_kernel = true; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -51,7 +51,7 @@ void perform_test(util::logger &log, const std::string &type_name, sycl::get_kernel_bundle(ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { - no_target_kernel = true; + has_target_kernel = false; log.note("kernel_bundle doesn't contain target kernel in case (" + case_hint + ") for " + type_name_string::get(type_name) + " (skipped)"); @@ -74,8 +74,8 @@ void perform_test(util::logger &log, const std::string &type_name, } }); } - if (!no_target_kernel) { - // Check results only if taget kernel is available + if (has_target_kernel) { + // Check results only if target kernel is available if (!check_equal_values(ref, result)) FAIL(log, "case (" + case_hint + ") for " + type_name_string::get(type_name)); diff --git a/tests/spec_constants/spec_constants_multiple.h b/tests/spec_constants/spec_constants_multiple.h index 2322d9f65..68858d42d 100644 --- a/tests/spec_constants/spec_constants_multiple.h +++ b/tests/spec_constants/spec_constants_multiple.h @@ -47,7 +47,7 @@ class check_specialization_constants_multiple_for_type { auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); - bool no_target_kernel = false; + bool has_target_kernel = true; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -78,7 +78,7 @@ class check_specialization_constants_multiple_for_type { sycl::get_kernel_bundle(ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { - no_target_kernel = true; + has_target_kernel = false; log.note( "kernel_bundle doesn't contain target kernel;" "multiple spec const for " + @@ -113,8 +113,8 @@ class check_specialization_constants_multiple_for_type { } }); } - if (!no_target_kernel) { - // Check results only if taget kernel is available + if (has_target_kernel) { + // Check results only if target kernel is available if (!check_equal_values(ref1, result_vec[0].value) || !check_equal_values(ref2, result_vec[1].value) || !check_equal_values(ref3, result_vec[2].value) || diff --git a/tests/spec_constants/spec_constants_same_name_inter_link.h b/tests/spec_constants/spec_constants_same_name_inter_link.h index 07ae635f0..e74bc9c3b 100644 --- a/tests/spec_constants/spec_constants_same_name_inter_link.h +++ b/tests/spec_constants/spec_constants_same_name_inter_link.h @@ -40,7 +40,7 @@ class check_specialization_constants_same_name_inter_link_for_type { auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); - bool no_target_kernel = false; + bool has_target_kernel = true; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -68,7 +68,7 @@ class check_specialization_constants_same_name_inter_link_for_type { sycl::get_kernel_bundle(ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { - no_target_kernel = true; + has_target_kernel = false; log.note("kernel_bundle doesn't contain target kernel for " + type_name_string::get(type_name) + " (skipped)"); return; @@ -95,8 +95,8 @@ class check_specialization_constants_same_name_inter_link_for_type { } }); } - if (!no_target_kernel) { - // Check results only if taget kernel is available + if (has_target_kernel) { + // Check results only if target kernel is available if (!check_equal_values(ref_def_value, def_value)) FAIL(log, "Wrong linked spec const; (translation unit " + std::to_string(TestConfig::tu) + ") for " + diff --git a/tests/spec_constants/spec_constants_same_name_stress.h b/tests/spec_constants/spec_constants_same_name_stress.h index 8fadbe889..7cc020f56 100644 --- a/tests/spec_constants/spec_constants_same_name_stress.h +++ b/tests/spec_constants/spec_constants_same_name_stress.h @@ -47,7 +47,7 @@ class check_specialization_constants_same_name_stress_for_type { auto queue = util::get_cts_object::queue(); const sycl::context ctx = queue.get_context(); const sycl::device dev = queue.get_device(); - bool no_target_kernel = false; + bool has_target_kernel = true; if constexpr (via_kb::value) { if (!dev.has(sycl::aspect::online_compiler)) { @@ -150,7 +150,7 @@ class check_specialization_constants_same_name_stress_for_type { auto k_bundle = sycl::get_kernel_bundle( ctx, {dev}, {kernelId}); if (!k_bundle.has_kernel(kernelId)) { - no_target_kernel = true; + has_target_kernel = false; log.note("kernel_bundle doesn't contain target kernel for " + type_name_string::get(type_name) + " (skipped)"); return; @@ -162,8 +162,8 @@ class check_specialization_constants_same_name_stress_for_type { } }); } - if (!no_target_kernel) { - // Check results only if taget kernel is available + if (has_target_kernel) { + // Check results only if target kernel is available for (int i = 0; i < size; ++i) { if (!check_equal_values(def_values_arr[i], ref_def_values_arr[i])) { FAIL(log, "Wrong default value for spec const defined in " +