-
Notifications
You must be signed in to change notification settings - Fork 787
[SYCL][DOC] Make some refactoring for group sorting spec #4666
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
Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Thanks to @gmlueck for useful offline comments. |
@gmlueck, could you please help to review changes? |
Sorry, GitHub does not allow me to comment on lines you didn't change in this PR. The above is the description of
For the other overload of
|
I was wondering about the names of these member functions from |
I found the description of "Group Helper" confusing at first. I think it would help to replace this introduction:
With:
I also think the definition of
I don't understand why the return type here is unspecified. Doesn't the return type need to be
|
One more global comment. I think we should make this entire extension "experimental" and move all of the APIs into the "ext::oneapi::experimental" namespace. My reasoning is that it is almost impossible to use this API today in a non-experimental way. All of the overloads of Moreover, if the application calls one of the Therefore, I think that almost every application that uses this extension will end up using experimental features, so I don't see any value in calling some parts non-experimental. I think we should just say the whole thing is experimental until we are ready to make the predefined Group Helper and the predefined sorters non-experimental. |
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.
Sorry, I should have started my comments by saying that I like the new organization a lot. I think it's much clearer now that joint_sort
and sort_over_group
are explained first.
I have a couple final comments below.
sycl/doc/extensions/GroupAlgorithms/SYCL_INTEL_group_sort.asciidoc
Outdated
Show resolved
Hide resolved
sycl/doc/extensions/GroupAlgorithms/SYCL_INTEL_group_sort.asciidoc
Outdated
Show resolved
Hide resolved
@gmlueck, thank you for your comments!
Could you please clarify the difference between "requirement on the application" and "guarantee that the implementation makes"? Here we need to say users on the Spec level that they need to pass parameters that are same for all work-items in one work-group or sub-group. Sorry, I couldn't figure out why it's "a guarantee that the implementation makes". By the way, the same wording is for others Group algorithms, e.g. joint_reduce.
It was already discussed here Names are too long and default_sorter<Compare>::memory_required_sort_over_group(/*...*/);
The thing is we are not sure that each group helper should contain
I see your point. It looks like users need to pass any experimental thing when they call non-experimental function. However, |
Maybe I'm confused, but I thought it was the library that calls the custom sorter's
makes it sound like the application needs to pass the same values of |
OK, I see there was already a discussion about this. I guess this part of the API is experimental, so we will get feedback from customers about whether it is confusing. |
But the spec says this currently:
There is only one constructor for |
Hmm. Have we made a DPC++ release with this support yet? |
sycl/doc/extensions/GroupAlgorithms/SYCL_INTEL_group_sort.asciidoc
Outdated
Show resolved
Hide resolved
Ah, by library you mean implementation? Then, you're right.
Correct. Will think about it.
As far as I know, no. |
@gmlueck, I've addressed most of your comments.
I'm imaging that |
Maybe I'm confused about how the GroupHelper works. I thought it was the implementation of The application doesn't control the implementation of |
You're right. The best variant is to mention explicitly that we require sycl::span here as UPD: made corresponding changes |
sycl/doc/extensions/GroupAlgorithms/SYCL_INTEL_group_sort.asciidoc
Outdated
Show resolved
Hide resolved
sycl/doc/extensions/GroupAlgorithms/SYCL_INTEL_group_sort.asciidoc
Outdated
Show resolved
Hide resolved
@gmlueck, @Pennycook, @dmitriy-sobolev, changes are applied. Feel free to review |
@gmlueck, @Pennycook, feel free to approve if changes are good enough to be merged. |
I thought you were going to add some NOTE to the spec saying which features are not implemented yet? Someone reading that spec needs some way to know which features are safe to use. |
@gmlueck, I think |
…5169) Changes for the spec: #4666 Test: intel/llvm-test-suite#633 Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
Spec changes: intel/llvm#4666 Implementation changes: intel/llvm#5169 Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
…tel/llvm-test-suite#633) Spec changes: intel#4666 Implementation changes: intel#5169 Signed-off-by: Fedorov, Andrey <andrey.fedorov@intel.com>
No changes for interfaces. Just some clarifications to avoid misunderstanding.
Following was done:
group_with_scratchpad
is enough.README.md
.Signed-off-by: Fedorov, Andrey andrey.fedorov@intel.com