-
Notifications
You must be signed in to change notification settings - Fork 769
[SYCL] Add BFloat16 aspect #4266
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
f20179c
to
26c7363
Compare
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.
Although the changes look good to me, @romanovvlad do we allow for new features in Runtime nowadays?
// TODO: We claim, that all Intel GPU devices support bfloat16 conversion | ||
// feature but we'd better have a low-level extension to query for support | ||
// of the feature |
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.
Is there any spec for the extension?
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.
Here it is #4237
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.
It seems #4237 is a spec for SYCL extension. Is there any spec for "a low-level extension"?
Could you please clarify why the temporary solution thru checking platform name is needed? Can we wait and implement the proper solution?
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.
Can we wait and implement the proper solution?
I'd like to have it merged soon. Is it ok if we merge it as is and update the implementation later, when we have the proper solution?
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.
Coping my answer from below.
It seems #4237 is a spec for SYCL extension. Is there any spec for "a low-level extension"?
Nothing to share right now
Could you please clarify why the temporary solution thru checking platform name is needed? Can we wait and implement the proper solution?
So users could already write bfloat16 - sensitive code using aspect traits deciding for them which version of kernel should be enqueued: with or without bf16 conversion feature.
platform plt = | ||
get_device_info<platform, info::device::platform>::get(dev, Plugin); | ||
std::string platform_name = plt.get_info<info::platform::name>(); | ||
if (platform_name == "Intel(R) OpenCL HD Graphics") |
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 believe, there should be a better way to verify the device is either of Intel's GPUs.
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.
Right now there is no low-level runtime specification for the feature, so it's the best, what came in my mind. Do you have any ideas?
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.
@romanovvlad do we allow for new features in Runtime nowadays?
Yes, we do.
@@ -154,6 +154,7 @@ enum class device : cl_device_info { | |||
atomic64 = PI_DEVICE_INFO_ATOMIC_64, | |||
atomic_memory_order_capabilities = | |||
PI_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES, | |||
ext_intel_bf16_conversion, |
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.
Are we going to map it to a specific value in future?
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.
Yes
// TODO: We claim, that all Intel GPU devices support bfloat16 conversion | ||
// feature but we'd better have a low-level extension to query for support | ||
// of the feature |
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.
It seems #4237 is a spec for SYCL extension. Is there any spec for "a low-level extension"?
Could you please clarify why the temporary solution thru checking platform name is needed? Can we wait and implement the proper solution?
Nothing to share right now
So users could already write bfloat16 - sensitive code using aspect traits deciding for them which version of kernel should be enqueued: with or without bf16 conversion feature. |
Currently this aspect is mapped on a device info which is being proved by get_platform_name function, claiming, that any Intel GPU device supports BFloat16 extension. Once we have a lower-level spec we can re-map it on the appropriate OpenCL extension. Spec: intel#4237 Signed-off-by: Dmitry Sidorov <[email protected]>
26c7363
to
423ff17
Compare
Updated minor version and ABI test |
E2E test: intel/llvm-test-suite#390 |
Closing: there are several issues with not mapping an aspect directly on a low-level extension. Also to use aspects for this device code feature we also need https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/DeviceIf/device_if.asciidoc which is not implemented. Instead I'll introduce a driver option to enable generation the BF16 conversion instructions. |
Currently this aspect is mapped on a device info which is
being proved by get_platform_name function, claiming, that any
Intel GPU device supports BFloat16 extension. Once we have
a lower-level spec we can re-map it on the appropriate OpenCL
extension.
Spec:
#4237
Signed-off-by: Dmitry Sidorov [email protected]