-
Notifications
You must be signed in to change notification settings - Fork 131
[SYCL] Fix tests using device version #1019
base: intel
Are you sure you want to change the base?
Changes from 4 commits
15e9e75
31b6565
8a01a78
234b4f7
447a4e5
4fda975
8e4f4d2
a3286e9
634f00f
0cda86d
6dbb529
f144695
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -169,5 +169,14 @@ bool core_sg_supported(const device &Device) { | |
auto Vec = Device.get_info<info::device::extensions>(); | ||
if (std::find(Vec.begin(), Vec.end(), "cl_khr_subgroups") != std::end(Vec)) | ||
return true; | ||
return Device.get_info<info::device::version>() >= "2.1"; | ||
|
||
if (Device.get_backend() == sycl::backend::opencl) { | ||
std::string ver = Device.get_info<info::device::version>(); | ||
|
||
// Extract the numerical version from the version string, OpenCL version | ||
// string have the format "OpenCL <major>.<minor> <vendor specific data>". | ||
return ver.substr(7, 3) >= "2.1"; | ||
} | ||
|
||
return false; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The change to the device version stuff looks good to me, but I'm a bit confused -- do we currently return false for all the non-OpenCL backends? Or do the NVIDIA and AMD backends report support for cl_khr_subgroups in their extensions list? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, I think the initial intent was for backends supporting it to return In theory we should probably report it from the Nvidia and AMD backends but I don't think we currently do. It's not ideal because since this is a runtime check it mostly looks like the tests are working even if they're disabled. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, that's pretty confusing. Thanks for explaining it. I think long-term we should look to remove this check entirely. Sub-groups are a core feature of SYCL 2020 and should work everywhere. But I'm happy for that to be done as part of a separate PR. |
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this not internal to opencl plugin?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because the OpenCL backend defines
info::device::version
as just passing through the whole version string from OpenCL, see:There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean that plugin would check native version and return if "cl_khr_subgroups" extension is supported or not.
Similar to here: https://github.com/intel/llvm/blob/9008a5d28110f0fb847907ea4c8d2d5fe7af702b/sycl/plugins/opencl/pi_opencl.cpp#L609
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh I see what you mean, we could maybe do that, but I'm not sure it's quite correct, looking into it, I believe
cl_khr_subgroups
is now core in SYCL2020, so all devices should support it, and the only thing we could check in theory is if the sub-group size is1
, so maybe we could remove/simplify this a lot, but I'm not sure all the plugins already implement this correctly so it would need some testing.Could we leave it as-is in this PR that's just changing the version number, and I'll look into updating that in a follow-up?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, sure