-
Notifications
You must be signed in to change notification settings - Fork 738
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][ABI Break] Remove ext::oneapi::reduction #6634
Conversation
This PR also move the implementation from the extension header to the regular sycl/reduction.hpp. There might be some simplifications in the implementation enabled by that but they are left for a future PR.
One failure seems valid - addressing it in intel/llvm-test-suite#1176. Once that passes, PRs have to be merged together. |
Also remove now useless using directives
/// Class that is used to represent objects that are passed to user's lambda | ||
/// functions and representing users' reduction variable. | ||
/// The generic version of the class represents those reductions of those | ||
/// types and operations for which the identity value is not known. | ||
/// The View template describes whether the reducer owns its data or not: if | ||
/// View is 'true', then the reducer does not own its data and instead provides | ||
/// a view of data allocated elsewhere (i.e. via a reference or pointer member); | ||
/// if View is 'false', then the reducer owns its data. With the current default | ||
/// reduction algorithm, the top-level reducers that are passed to the user's | ||
/// lambda contain a private copy of the reduction variable, whereas any reducer | ||
/// created by a subscript operator contains a reference to a reduction variable | ||
/// allocated elsewhere. The Subst parameter is an implementation detail and is | ||
/// used to spell out restrictions using 'enable_if'. | ||
template <typename T, class BinaryOperation, int Dims, size_t Extent, | ||
bool View = false, typename Subst = void> | ||
class reducer; |
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 was moved from sycl::ext::oneapi::detail
to sycl
because
- That's what standard seems to say
- To make it work with ESIMD processing. We need it disallowed and everything in
sycl::detail
is allowed, while only an explicit subset ofsycl
is allowed in there.
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.
Looks good! 👍
* ext::oneapi::reduction removed in intel#6634 * sycl::item in kernel supported since intel#7478 * sycl::range + many reductions implemented in intel#7456 There might be other things that have been implemented already, but I cannot immediately identify them, if any.
* ext::oneapi::reduction removed in #6634 * sycl::item in kernel supported since #7478 * sycl::range + many reductions implemented in #7456 * CPU reduction performance implemented in #6164 * span support implemented in #6019 There might be other things that have been implemented already, but I cannot immediately identify them, if any.
This PR also move the implementation from the extension header to the
regular sycl/reduction.hpp.
There might be some simplifications in the implementation enabled by
that but they are left for a future PR.