Skip to content

[SYCL][COMPAT][Doc] Add SYCLcompat documentation #9646

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

Merged

Conversation

Alcpz
Copy link
Contributor

@Alcpz Alcpz commented May 30, 2023

This pull request introduces a new stand alone library, SYCLcompat: a simplified wrapper on top of SYCL, aiming to make it more accessible to developers familiar with other heterogeneous programming models.

SYCLcompat has two primary goals:

  • Improve the adoption of SYCL. This library is designed to provide a familiar programming interface that resembles other popular heterogeneous programming models. By reducing the learning curve, it enables developers to leverage SYCL's power and features more easily.

  • Source-to-Source Translation Support. SYCLcompat is also designed to facilitate automatic source-to-source translation from other heterogeneous programming models to SYCL and offer a more standardized and consistent programming interface. This feature can significantly streamline the migration and integration of existing codebases into the SYCL ecosystem.

The first commit of this PR includes the proposed library README, providing explanation of its motivation, public interface, usage guidelines, and code examples.

A set of PRs will follow, including subsets of the current implementation including their tests.

We are open to any suggestions, concerns, or improvements you may have, so please, let us know if you have any.

Edit: Updated from extension to stand alone library.
#9976 dims.hpp and defs.hpp headers

@Alcpz Alcpz requested a review from a team as a code owner May 30, 2023 13:47
@Alcpz Alcpz changed the title [SYCL][COMPAT] Add compat extension document [SYCL][COMPAT][Doc] Add compat extension document May 30, 2023
@Alcpz Alcpz force-pushed the Alcpz/introduce-sycl_ext_oneapi_compat branch from c417e6d to b003d33 Compare June 19, 2023 09:46
@Alcpz Alcpz requested a review from a team as a code owner June 19, 2023 09:46
@Alcpz
Copy link
Contributor Author

Alcpz commented Jun 19, 2023

We were advised to switch from oneAPI extension to library. The PR has been updated from an extension spec document to a README.

@Alcpz Alcpz changed the title [SYCL][COMPAT][Doc] Add compat extension document [SYCL][COMPAT][Doc] Add SYCLcompat document Jun 19, 2023
@Alcpz Alcpz changed the title [SYCL][COMPAT][Doc] Add SYCLcompat document [SYCL][COMPAT][Doc] Add SYCLcompat documentation Jun 19, 2023
@Alcpz Alcpz requested a review from a team as a code owner August 3, 2023 08:21
@joeatodd
Copy link
Contributor

joeatodd commented Aug 7, 2023

LGTM, nice work @Alcpz

@Alcpz
Copy link
Contributor Author

Alcpz commented Aug 7, 2023

@intel/dpcpp-doc-reviewers We think this is ready for merge now.

@dm-vodopyanov
Copy link
Contributor

@intel/dpcpp-doc-reviewers We think this is ready for merge now.

@Alcpz this can't be merged now, the process is here: https://github.com/intel/llvm/blob/sycl/CONTRIBUTING.md#merge

Currently the approve from @intel/dpcpp-doc-reviewers is required.

@Alcpz
Copy link
Contributor Author

Alcpz commented Aug 7, 2023

@dm-vodopyanov Sorry for the misunderstanding. I meant the following: we consider the version good to merge, we would like for a review from the dpcpp-doc-reviewers group

@@ -0,0 +1,1295 @@
# SYCLcompat

SYCLcompat is a header-only library that intends to help developers familiar
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we have access to the PR with the library implementation? I wonder what the library location in the source code directory layout is. Is it the part of the DPC++ runtime library?

Copy link
Contributor

Choose a reason for hiding this comment

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

We are pushing the implementation in a series of incremental PRs. The first of these is here which simply adds a couple of small headers & their tests, and the relevant CMake.

For the structure, refer to this section of the CODEOWNERS.

This is not part of the DPC++ runtime library, but rather a stand-alone library which is shipped with DPC++. This structure was discussed & decided by the oneAPI Architecture Forum.

Once the first implementation PR is merged, we'll begin to put up more incremental PRs adding functionality. This approach has been taken in response to feedback from Intel requesting that we avoid monolithic PRs which are hard to review.

Copy link
Contributor

@joeatodd joeatodd left a comment

Choose a reason for hiding this comment

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

@bader thanks for your in-depth review & useful feedback. We will address the remaining issues, rebase and request another review 👍

@@ -0,0 +1,1295 @@
# SYCLcompat

SYCLcompat is a header-only library that intends to help developers familiar
Copy link
Contributor

Choose a reason for hiding this comment

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

We are pushing the implementation in a series of incremental PRs. The first of these is here which simply adds a couple of small headers & their tests, and the relevant CMake.

For the structure, refer to this section of the CODEOWNERS.

This is not part of the DPC++ runtime library, but rather a stand-alone library which is shipped with DPC++. This structure was discussed & decided by the oneAPI Architecture Forum.

Once the first implementation PR is merged, we'll begin to put up more incremental PRs adding functionality. This approach has been taken in response to feedback from Intel requesting that we avoid monolithic PRs which are hard to review.

Alcpz and others added 8 commits August 8, 2023 12:45
Co-Authored-By: Gordon Brown <gordon@codeplay.com>
Co-Authored-By: Joe Todd <joe.todd@codeplay.com>
Co-Authored-By: Pietro Ghiglio <pietro.ghiglio@codeplay.com>
Co-Authored-By: Ruyman Reyes <ruyman@codeplay.com>
Updated the Local Memory and `launch<function>` sections to improve
readability.
Co-authored-by: Steffen Larsen <steffen.larsen@intel.com>
Co-authored-by: aelovikov-intel <andrei.elovikov@intel.com>
There was an agreement to move from an extension to an independent
library within DPCPP, hence this commit.
Co-authored-by: Sami Hatna <sami.hatna@codeplay.com>
Co-authored-by: Alexey Bader <alexey.bader@intel.com>
@joeatodd joeatodd force-pushed the Alcpz/introduce-sycl_ext_oneapi_compat branch from 6564fad to 3af8eda Compare August 8, 2023 11:47
- Remove deprecated definitions of math pi
- Improved comment formatting (/// -> //)
- Update complex extension link
@joeatodd
Copy link
Contributor

joeatodd commented Aug 8, 2023

Hey @bader we've addressed most of your comments. I've asked for a clarification about the variable naming. Thanks!

@bader
Copy link
Contributor

bader commented Aug 8, 2023

@bader thanks for your in-depth review & useful feedback. We will address the remaining issues, rebase and request another review 👍

@joeatodd, thanks. Please, do not use rebase to update PR. It's hard to track what changed. If you need to sync with the sycl branch, just use git merge.

@Alcpz
Copy link
Contributor Author

Alcpz commented Aug 9, 2023

Hello @dm-vodopyanov , we have now the required approvals.

@dm-vodopyanov dm-vodopyanov merged commit 180a92a into intel:sycl Aug 9, 2023
@dm-vodopyanov
Copy link
Contributor

@Alcpz thanks, according to the process mentioned above, please ping faceless account next time, not the specific people.

@Alcpz Alcpz deleted the Alcpz/introduce-sycl_ext_oneapi_compat branch August 9, 2023 12:27
dm-vodopyanov pushed a commit that referenced this pull request Aug 9, 2023
This is an implementation of SYCLcompat, the stand alone library
proposed in #9646.
Please, find the documentation there.

SYCLcompat has two primary goals:

- Improve the adoption of SYCL. This library is designed to provide a
familiar programming interface that resembles other popular
heterogeneous programming models. By reducing the learning curve, it
enables developers to leverage SYCL's power and features more easily.
- Source-to-Source Translation Support. SYCLcompat is also designed to
facilitate automatic source-to-source translation from other
heterogeneous programming models to SYCL and offer a more standardized
and consistent programming interface. This feature can significantly
streamline the migration and integration of existing codebases into the
SYCL ecosystem

The PR also includes tests. We were advised to include the tests as part
of `sycl/unittests`, so we added a different mechanism to build them
using `clang`.

As we stated in the docs PR, we are open to any suggestions, concerns,
or improvements you may have, so please, let us know if you have any.

---------

Co-authored-by: Gordon Brown <gordon@codeplay.com>
Co-authored-by: Joe Todd <joe.todd@codeplay.com>
Co-authored-by: Pietro Ghiglio <pietro.ghiglio@codeplay.com>
Co-authored-by: Ruyman Reyes <ruyman@codeplay.com>
Co-authored-by: tomflinda <tomflinda@gmail.com>
mdtoguchi pushed a commit to mdtoguchi/llvm that referenced this pull request Oct 18, 2023
This pull request introduces a new stand alone library, `SYCLcompat`: a
simplified wrapper on top of SYCL, aiming to make it more accessible to
developers familiar with other heterogeneous programming models.

SYCLcompat has two primary goals:

- Improve the adoption of SYCL. This library is designed to provide a
familiar programming interface that resembles other popular
heterogeneous programming models. By reducing the learning curve, it
enables developers to leverage SYCL's power and features more easily.

- Source-to-Source Translation Support. SYCLcompat is also designed to
facilitate automatic source-to-source translation from other
heterogeneous programming models to SYCL and offer a more standardized
and consistent programming interface. This feature can significantly
streamline the migration and integration of existing codebases into the
SYCL ecosystem.

The first commit of this PR includes the proposed library README,
providing explanation of its motivation, public interface, usage
guidelines, and code examples.

A set of PRs will follow, including subsets of the current
implementation including their tests.

We are open to any suggestions, concerns, or improvements you may have,
so please, let us know if you have any.

Edit: Updated from extension to stand alone library.
intel#9976 `dims.hpp` and `defs.hpp`
headers

---------

Co-authored-by: Gordon Brown <gordon@codeplay.com>
Co-authored-by: Joe Todd <joe.todd@codeplay.com>
Co-authored-by: Pietro Ghiglio <pietro.ghiglio@codeplay.com>
Co-authored-by: Ruyman Reyes <ruyman@codeplay.com>
Co-authored-by: Steffen Larsen <steffen.larsen@intel.com>
Co-authored-by: aelovikov-intel <andrei.elovikov@intel.com>
Co-authored-by: Sami Hatna <sami.hatna@codeplay.com>
Co-authored-by: Joe Todd <joeatodd@users.noreply.github.com>
Co-authored-by: Alexey Bader <alexey.bader@intel.com>
mdtoguchi pushed a commit to mdtoguchi/llvm that referenced this pull request Oct 18, 2023
This is an implementation of SYCLcompat, the stand alone library
proposed in intel#9646.
Please, find the documentation there.

SYCLcompat has two primary goals:

- Improve the adoption of SYCL. This library is designed to provide a
familiar programming interface that resembles other popular
heterogeneous programming models. By reducing the learning curve, it
enables developers to leverage SYCL's power and features more easily.
- Source-to-Source Translation Support. SYCLcompat is also designed to
facilitate automatic source-to-source translation from other
heterogeneous programming models to SYCL and offer a more standardized
and consistent programming interface. This feature can significantly
streamline the migration and integration of existing codebases into the
SYCL ecosystem

The PR also includes tests. We were advised to include the tests as part
of `sycl/unittests`, so we added a different mechanism to build them
using `clang`.

As we stated in the docs PR, we are open to any suggestions, concerns,
or improvements you may have, so please, let us know if you have any.

---------

Co-authored-by: Gordon Brown <gordon@codeplay.com>
Co-authored-by: Joe Todd <joe.todd@codeplay.com>
Co-authored-by: Pietro Ghiglio <pietro.ghiglio@codeplay.com>
Co-authored-by: Ruyman Reyes <ruyman@codeplay.com>
Co-authored-by: tomflinda <tomflinda@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants