Skip to content
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] Add prototype of group algorithms #1236

Merged
merged 19 commits into from
Mar 17, 2020

Conversation

Pennycook
Copy link
Contributor

Exposes group collectives:

  • all_of
  • any_of
  • none_of
  • reduce
  • exclusive_scan
  • inclusive_scan

This prototype does not support the host device.

Co-Authored-By: Roland Schulz roland.schulz@intel.com
Co-Authored-By: Alexey Sachkov alexey.sachkov@intel.com

Signed-off-by: John Pennycook john.pennycook@intel.com

@Pennycook Pennycook added the spec extension All issues/PRs related to extensions specifications label Mar 3, 2020
@Pennycook Pennycook requested review from bader and AlexeySachkov March 3, 2020 17:28
@Pennycook
Copy link
Contributor Author

@bader There was a formatting error in sycl.hpp, but on a line I didn't change. I fixed it to make the check pass, but wanted to point this out in case it's not the expected behavior of the clang-format-check script.

@bader
Copy link
Contributor

bader commented Mar 3, 2020

@bader There was a formatting error in sycl.hpp, but on a line I didn't change. I fixed it to make the check pass, but wanted to point this out in case it's not the expected behavior of the clang-format-check script.

@Pennycook, thanks for taking care. Are you talking about includes order? If so, I think the check is applied for all includes not separated by an empty line.

@Pennycook
Copy link
Contributor Author

@Pennycook, thanks for taking care. Are you talking about includes order? If so, I think the check is applied for all includes not separated by an empty line.

Right, it was the include order. I understand why clang-format made the change, but it seemed to be complaining about an include that I hadn't added! Looking at the final diff everything looks fine, though, so please ignore this. Probably the order got fixed in a previous commit, and I was accidentally undoing the change.

@Pennycook
Copy link
Contributor Author

Pennycook commented Mar 4, 2020

I think the test that's failing is unrelated to the changes here. I'll try again after #1245 is merged.

Copy link
Contributor

@bader bader left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a few minor comments.

sycl/include/CL/sycl/group.hpp Outdated Show resolved Hide resolved
sycl/test/group-algorithm/broadcast.cpp Outdated Show resolved Hide resolved
sycl/include/CL/sycl/detail/spirv.hpp Outdated Show resolved Hide resolved
sycl/include/CL/sycl/detail/spirv.hpp Show resolved Hide resolved
sycl/include/CL/sycl/intel/group_algorithm.hpp Outdated Show resolved Hide resolved
sycl/test/group-algorithm/all_of.cpp Outdated Show resolved Hide resolved
bader
bader previously approved these changes Mar 11, 2020
Copy link
Contributor

@bader bader left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@Pennycook
Copy link
Contributor Author

Added new algorithm from #1297.

@Pennycook Pennycook requested a review from bader March 12, 2020 18:04
Copy link
Contributor

@bader bader left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Pennycook, please, fix build issues.

sycl/include/CL/sycl/intel/group_algorithm.hpp Outdated Show resolved Hide resolved
sycl/include/CL/sycl/intel/group_algorithm.hpp Outdated Show resolved Hide resolved
bader
bader previously approved these changes Mar 13, 2020
Preparation to re-use code for work-group collectives:
- Move calc to functional.hpp
- Make SPIR-V scope an explicit argument to calc
- Add C++ helper for __spirv_GroupBroadcast

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Simplifies definition of library functions by providing:
- id_type
- range_type
- linear_id_type
- dimensions

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Exposes group collectives:
- all_of
- any_of
- none_of
- reduce
- exclusive_scan
- inclusive_scan

This prototype does not support the host device.

Co-Authored-By: Roland Schulz <roland.schulz@intel.com>
Co-Authored-By: Alexey Sachkov <alexey.sachkov@intel.com>

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
dimensions => Dimensions

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
dimensions => Dimensions

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
Now enabled by default, disabled by:
__DISABLE_SYCL_INTEL_GROUP_ALGORITHMS__.

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
- Remove generic lambdas
- Guard usage of transparent functors

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
Avoids multiple definition errors.

Signed-off-by: John Pennycook <john.pennycook@intel.com>
Signed-off-by: John Pennycook <john.pennycook@intel.com>
uint32_t => size_t

Signed-off-by: John Pennycook <john.pennycook@intel.com>
@Pennycook Pennycook force-pushed the group-algorithms-prototype branch from a61240b to 760761f Compare March 13, 2020 19:41
@Pennycook
Copy link
Contributor Author

I think #1026 accidentally undid one of the changes from #1152, and that's what is causing the latest failures. I've rebased and re-applied the change from uint32_t to size_t.

@bader -- Looks like you were right, I should have included a regression test!

@bader bader merged commit 8bfa107 into intel:sycl Mar 17, 2020
alexbatashev pushed a commit to alexbatashev/llvm that referenced this pull request Mar 17, 2020
…e_api_test

* origin/sycl: (1188 commits)
  [SYCL][CUDA] Improve CUDA backend documentation (intel#1293)
  [SYCL] Emit textual IR when -S -fsycl-device-only is used (intel#1314)
  [SYCL] Add prototype of group algorithms (intel#1236)
  [SYCL] XFAIL test on windows to unblock pulldown
  Allow Intel Loop Controls only with SPV_INTEL_fpga_loop_controls
  Apply suggested assert msg change
  Implement SPV_INTEL_io_pipes extension
  [SYCL] Fix dependencies for SYCLLowerIR (intel#1321)
  [CI] Allow builds without pre-downloaded OpenCL in configure.py (intel#1317)
  [SYCL] Move SYCL headers from standard clang location (intel#1308)
  [mlir] Add support for generating dialect declarations via tablegen.
  Be more strict when checking existence of foo
  [CodeGenPrepare] Freeze condition when transforming select to br
  [ORC] Remove an undefined static method from LLJIT.
  [JITLink][AArch64] Fix incorrect capitalization in a testcase name.
  [ORC] Print symbol flags and materializer name in ExecutionSession::dump.
  [JITLink][MachO] Re-apply b64afad, MachO linker-private support, with fixes.
  Basic Block Sections Support.
  Test commit.
  [SYCL][Doc] Deploy documentation for PI (intel#1318)
  ...
@Pennycook Pennycook deleted the group-algorithms-prototype branch March 19, 2020 00:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
spec extension All issues/PRs related to extensions specifications
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants