-
Notifications
You must be signed in to change notification settings - Fork 752
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
[SYCL][Group algorithms] Add group sorting algorithms implementation #4439
Conversation
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
@capatober, please, create draft pull request for "work in progress". |
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
The PR is ready for review. |
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
@intel/llvm-reviewers-runtime, just kind reminder. Patch is ready for review |
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
std::uint8_t *scratch; | ||
std::size_t scratch_size; |
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.
This is very similar to my previous comment. A pair of a pointer to an array and its size is either range or span. Since we have span backported to SYCL 2020, can we use it here?
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.
We consider this option previously during the API discussion. The thing is that if we replaced this with sycl::span, we would need an additional template parameter for sorter (extent). However, extent is not relevant to the default_sorter
, but to the parameter of its ctor.
sycl/include/sycl/ext/oneapi/experimental/group_helpers_sorters.hpp
Outdated
Show resolved
Hide resolved
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
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.
Does this extension have a doc (under llvm/sycl/doc/extensions
) ?
sycl/include/sycl/ext/oneapi/experimental/group_helpers_sorters.hpp
Outdated
Show resolved
Hide resolved
Also, we need some tests. |
Sure. It's mentioned in the description of the PR. (https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/GroupAlgorithms/SYCL_INTEL_group_sort.asciidoc)
It's also mentioned in the description :) See here: intel/llvm-test-suite#438 |
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
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.
LGTM
@intel/llvm-reviewers-runtime, is anything else needed to merge the code to the repo? I don't have enough rights for this action |
At least you need to make sure CI is green. Also approve from @intel/dpcpp-specification-reviewers is required. |
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
@intel/llvm-reviewers-runtime, CI is green. Feel free to approve and merge. Changes for spec are obvious and doesn't require to be approved additionally |
sycl/include/sycl/ext/oneapi/experimental/group_helpers_sorters.hpp
Outdated
Show resolved
Hide resolved
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
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.
Still LGTM
* upstream/sycl: (36 commits) [SYCL] Add SYCL2020 target::device enumeration value (intel#4587) [SYCL][Doc] Update ITT instrumentation docs (intel#4503) [SYCL][L0] Make all L0 events have device-visibility (intel#4534) [SYCL] Updated Level-Zero backend spec according to SYCL 2020 standard (intel#4560) [SYCL] Add error_code support for SYCL 1.2.1 exception classes (intel#4574) [SYCL][CI] Provide --ci-defaults option for config script (intel#4583) [CI] Switch GitHub Actions to Ubuntu 20.04 (intel#4582) [SYCL][CUDA] Fix context clearing in PiCuda tests (intel#4483) [SYCL] Hide SYCL service kernels (intel#4519) [SYCL][L0] Fix mismatched ZE call count (intel#4559) [SYCL] Remove function pointers extension (intel#4459) [GitHub Actions] Uplift clang version in post-commit validation (intel#4581) [SYCL] Ignore usm prefetch dummy flag (intel#4568) [SYCL][Group algorithms] Add group sorting algorithms implementation (intel#4439) [SYCL] Resolve name clash with a user defined symbol (intel#4570) [clang-offload-wrapper] Do not create .tgtimg section with -emit-reg-funcs=0 (intel#4577) [SYCL][FPGA] Remove deprecated attribute functionality (intel#4532) [SYCL] Remove _class aliases (intel#4465) [SYCL][CUDA][HIP] Report every device in its own platform (intel#4571) [SYCL][L0] make_device shouldn't need platform as an input (intel#4561) ...
This PR introduce the implementation for the Group Sort extension.
The PR includes:
joint_sort
andsort_over_group
functionsdefault_sorter
group_with_scratchpad
Algorithms are quite general. It should work with custom data types, custom comparators, custom sorters.
The PR doesn't include:
radix_sorter
Tests are here: intel/llvm-test-suite#438
Signed-off-by: Fedorov, Andrey andrey.fedorov@intel.com