diff --git a/SYCL/InlineAsm/asm_no_operands.cpp b/SYCL/InlineAsm/asm_no_operands.cpp index 24b07e74b4..29753337f2 100644 --- a/SYCL/InlineAsm/asm_no_operands.cpp +++ b/SYCL/InlineAsm/asm_no_operands.cpp @@ -12,8 +12,10 @@ int main() { cl::sycl::queue Queue; cl::sycl::device Device = Queue.get_device(); + auto Vec = Device.get_info(); if (!isInlineASMSupported(Device) || - !Device.has_extension("cl_intel_required_subgroup_size")) { + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/InlineAsm/include/asmhelper.h b/SYCL/InlineAsm/include/asmhelper.h index 8fbed07f95..3db77a9812 100644 --- a/SYCL/InlineAsm/include/asmhelper.h +++ b/SYCL/InlineAsm/include/asmhelper.h @@ -102,8 +102,10 @@ bool launchInlineASMTestImpl(F &f, bool requires_particular_sg_size = true) { return false; } + auto Vec = device.get_info(); if (requires_particular_sg_size && - !device.has_extension("cl_intel_required_subgroup_size")) { + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return false; } diff --git a/SYCL/InlineAsm/letter_example.cpp b/SYCL/InlineAsm/letter_example.cpp index 83f10070ea..c19a42cfe4 100644 --- a/SYCL/InlineAsm/letter_example.cpp +++ b/SYCL/InlineAsm/letter_example.cpp @@ -15,8 +15,10 @@ int main() { cl::sycl::queue q; cl::sycl::device Device = q.get_device(); + auto Vec = Device.get_info(); if (!isInlineASMSupported(Device) || - !Device.has_extension("cl_intel_required_subgroup_size")) { + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/InlineAsm/malloc_shared_32.cpp b/SYCL/InlineAsm/malloc_shared_32.cpp index cfd6c79913..0c1cfbfd4b 100644 --- a/SYCL/InlineAsm/malloc_shared_32.cpp +++ b/SYCL/InlineAsm/malloc_shared_32.cpp @@ -16,8 +16,10 @@ int main() { cl::sycl::device Device = q.get_device(); + auto Vec = Device.get_info(); if (!isInlineASMSupported(Device) || - !Device.has_extension("cl_intel_required_subgroup_size")) { + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/InlineAsm/malloc_shared_in_out_dif.cpp b/SYCL/InlineAsm/malloc_shared_in_out_dif.cpp index 8a0a5dae0c..666be194e0 100644 --- a/SYCL/InlineAsm/malloc_shared_in_out_dif.cpp +++ b/SYCL/InlineAsm/malloc_shared_in_out_dif.cpp @@ -16,8 +16,10 @@ int main() { cl::sycl::device Device = q.get_device(); + auto Vec = Device.get_info(); if (!isInlineASMSupported(Device) || - !Device.has_extension("cl_intel_required_subgroup_size")) { + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/InlineAsm/malloc_shared_no_input.cpp b/SYCL/InlineAsm/malloc_shared_no_input.cpp index 594eea27c6..ee931d9d1c 100644 --- a/SYCL/InlineAsm/malloc_shared_no_input.cpp +++ b/SYCL/InlineAsm/malloc_shared_no_input.cpp @@ -15,8 +15,10 @@ int main() { cl::sycl::queue q; cl::sycl::device Device = q.get_device(); + auto Vec = Device.get_info(); if (!isInlineASMSupported(Device) || - !Device.has_extension("cl_intel_required_subgroup_size")) { + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/Regression/get_subgroup_sizes.cpp b/SYCL/Regression/get_subgroup_sizes.cpp index 8079cdfacd..2d5d422ba4 100644 --- a/SYCL/Regression/get_subgroup_sizes.cpp +++ b/SYCL/Regression/get_subgroup_sizes.cpp @@ -20,7 +20,9 @@ using namespace cl::sycl; int main() { queue Q; auto Dev = Q.get_device(); - if (Dev.has_extension("cl_intel_required_subgroup_size")) { + auto Vec = Dev.get_info(); + if (std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") != + std::end(Vec)) { std::vector SubGroupSizes = Dev.get_info(); std::vector::const_iterator MaxIter = diff --git a/SYCL/SubGroup/attributes.cpp b/SYCL/SubGroup/attributes.cpp index 4c94dc269c..16ca1766db 100644 --- a/SYCL/SubGroup/attributes.cpp +++ b/SYCL/SubGroup/attributes.cpp @@ -56,9 +56,13 @@ int main() { // According to specification, this kernel query requires `cl_khr_subgroups` // or `cl_intel_subgroups`, and also `cl_intel_required_subgroup_size` - if ((!Device.has_extension("cl_intel_subgroups") && - !Device.has_extension("cl_khr_subgroups")) || - !Device.has_extension("cl_intel_required_subgroup_size")) { + auto Vec = Device.get_info(); + if (std::find(Vec.begin(), Vec.end(), "cl_intel_subgroups") == + std::end(Vec) && + std::find(Vec.begin(), Vec.end(), "cl_khr_subgroups") == + std::end(Vec) || + std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/SubGroup/generic_reduce.cpp b/SYCL/SubGroup/generic_reduce.cpp index c0da01e718..90b569a6d7 100644 --- a/SYCL/SubGroup/generic_reduce.cpp +++ b/SYCL/SubGroup/generic_reduce.cpp @@ -63,7 +63,9 @@ void check_op(queue &Queue, T init, BinaryOperation op, bool skip_init = false, int main() { queue Queue; - if (!Queue.get_device().has_extension("cl_intel_subgroups")) { + auto Vec = Queue.get_device().get_info(); + if (std::find(Vec.begin(), Vec.end(), "cl_intel_subgroups") == + std::end(Vec)) { std::cout << "Skipping test\n"; return 0; } diff --git a/SYCL/SubGroup/helper.hpp b/SYCL/SubGroup/helper.hpp index 712537db3f..06f239abf0 100644 --- a/SYCL/SubGroup/helper.hpp +++ b/SYCL/SubGroup/helper.hpp @@ -166,7 +166,8 @@ void exit_if_not_equal_vec(vec val, vec ref, const char *name) { } bool core_sg_supported(const device &Device) { - if (Device.has_extension("cl_khr_subgroups")) + auto Vec = Device.get_info(); + if (std::find(Vec.begin(), Vec.end(), "cl_khr_subgroups") != std::end(Vec)) return true; return Device.get_info() >= "2.1"; } diff --git a/SYCL/SubGroup/info.cpp b/SYCL/SubGroup/info.cpp index 1462fee7a6..ff78d04d16 100644 --- a/SYCL/SubGroup/info.cpp +++ b/SYCL/SubGroup/info.cpp @@ -55,7 +55,9 @@ int main() { /* sub_group_sizes can be queried only if cl_intel_required_subgroup_size * extension is supported by device*/ - if (Device.has_extension("cl_intel_required_subgroup_size")) { + auto Vec = Device.get_info(); + if (std::find(Vec.begin(), Vec.end(), "cl_intel_required_subgroup_size") != + std::end(Vec)) { auto sg_sizes = Device.get_info(); for (auto r : {range<3>(3, 4, 5), range<3>(1, 1, 1), range<3>(4, 2, 1), range<3>(32, 3, 4), range<3>(7, 9, 11)}) { @@ -91,9 +93,12 @@ int main() { // According to specification, this kernel query requires `cl_khr_subgroups` // or `cl_intel_subgroups` - if ((Device.has_extension("cl_khr_subgroups") || - Device.has_extension("cl_intel_subgroups")) && - Device.has_extension("cl_intel_required_subgroup_size")) { + if ((std::find(Vec.begin(), Vec.end(), "cl_khr_subgroups") != + std::end(Vec)) || + std::find(Vec.begin(), Vec.end(), "cl_intel_subgroups") != + std::end(Vec) && + std::find(Vec.begin(), Vec.end(), + "cl_intel_required_subgroup_size") != std::end(Vec)) { Res = Kernel.get_sub_group_info< info::kernel_sub_group::compile_sub_group_size>(Device); diff --git a/SYCL/SubGroup/load_store.cpp b/SYCL/SubGroup/load_store.cpp index 1ad742fbef..84f5ce7353 100644 --- a/SYCL/SubGroup/load_store.cpp +++ b/SYCL/SubGroup/load_store.cpp @@ -194,7 +194,9 @@ int main() { } std::string PlatformName = Queue.get_device().get_platform().get_info(); - if (Queue.get_device().has_extension("cl_intel_subgroups") || + auto Vec = Queue.get_device().get_info(); + if (std::find(Vec.begin(), Vec.end(), "cl_intel_subgroups") != + std::end(Vec) || PlatformName.find("CUDA") != std::string::npos) { typedef bool aligned_char __attribute__((aligned(16))); check(Queue); @@ -223,7 +225,8 @@ int main() { check(Queue); check(Queue); } - if (Queue.get_device().has_extension("cl_intel_subgroups_short") || + if (std::find(Vec.begin(), Vec.end(), "cl_intel_subgroups_short") != + std::end(Vec) || PlatformName.find("CUDA") != std::string::npos) { typedef short aligned_short __attribute__((aligned(16))); check(Queue); @@ -245,7 +248,8 @@ int main() { check(Queue); } } - if (Queue.get_device().has_extension("cl_intel_subgroups_long") || + if (std::find(Vec.begin(), Vec.end(), "cl_intel_subgroups_long") != + std::end(Vec) || PlatformName.find("CUDA") != std::string::npos) { typedef long aligned_long __attribute__((aligned(16))); check(Queue);