-
Notifications
You must be signed in to change notification settings - Fork 791
[SYCL] Add support for kernel properties in no-handler path #20356
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
base: sycl
Are you sure you want to change the base?
Conversation
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.
Pull Request Overview
This PR adds support for kernel launch properties in SYCL's handler-less kernel submission path. Previously, properties were only supported through the handler-based path, requiring submission via a command group. This change enables properties to be used directly with queue kernel submission methods.
- Implements property parsing and validation in the no-handler kernel submission path
- Adds kernel launch property structure to pass properties across ABI boundaries
- Updates direct kernel submission APIs to accept and process properties
Reviewed Changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
sycl/test/virtual-functions/properties-negative.cpp | Updates expected error location from handler.hpp to kernel_launch_helper.hpp |
sycl/test/include_deps/sycl_detail_core.hpp.cpp | Reorders include dependencies for cluster and sync properties |
sycl/test/extensions/properties/non_esimd_kernel_fp_control.cpp | Updates expected error location from handler.hpp to kernel_launch_helper.hpp |
sycl/source/queue.cpp | Adds property parameter to kernel submission template instantiations |
sycl/source/handler.cpp | Refactors property processing and adds ifdef guards for ABI compatibility |
sycl/source/detail/queue_impl.hpp | Adds property parameter to direct kernel submission methods |
sycl/source/detail/queue_impl.cpp | Implements property validation and setting in direct submission path |
sycl/source/detail/kernel_data.hpp | Adds property validation and setting methods to KernelData class |
sycl/include/sycl/queue.hpp | Updates submit_kernel_direct to support properties from kernel get() method or explicit parameters |
sycl/include/sycl/khr/free_function_commands.hpp | Simplifies launch_grouped to use new property-aware submission path |
sycl/include/sycl/handler.hpp | Delegates property processing to KernelLaunchPropertyWrapper and adds ABI guards |
sycl/include/sycl/ext/oneapi/experimental/enqueue_functions.hpp | Adds property support to nd_launch with launch_config |
sycl/include/sycl/detail/kernel_launch_helper.hpp | Implements comprehensive property parsing, validation, and storage infrastructure |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
/// Process kernel properties. | ||
/// Note: it is important that this function *does not* depend on kernel | ||
/// name or kernel type, because then it will be instantiated for every | ||
/// kernel, even though body of those instantiated functions could be almost | ||
/// the same, thus unnecessary increasing compilation time. |
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.
In that case, shouldn't it be
template <...>
inline constexpr KernelLaunchPropertiesT WhateverName = <...>;
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.
That's copy-paste code. We anyway don't depend on KernelName in this function, this comment is just a warning about not changing this function to take KernelName as template param.
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 think your changes are extensive enough in the exact same area that I'd like to see this changed as part of your patch [series].
sycl/include/sycl/ext/oneapi/experimental/enqueue_functions.hpp
Outdated
Show resolved
Hide resolved
|
||
detail::submit_kernel_direct<KernelName>(std::move(Q), | ||
ConfigAccess.getRange(), KernelObj, | ||
Config.getProperties()); |
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.
There is note in https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/experimental/sycl_ext_oneapi_enqueue_functions.asciidoc#launch-configuration which says, that only kernel launch properties can be used here. I wonder if this affect the properties parsing logic in some way?
No description provided.