Skip to content

[SYCL][E2E] Switch KernelFusion/* tests to use <sycl/detail/core.hpp> #13129

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
merged 1 commit into from
Mar 25, 2024

Conversation

aelovikov-intel
Copy link
Contributor

@aelovikov-intel aelovikov-intel commented Mar 22, 2024

Use core.hpp instead of sycl.hpp to improve CI compile times, as described here: https://github.com/intel/llvm/tree/sycl/sycl/test-e2e#sycldetailcorehpp

Copy link
Contributor

@victor-eds victor-eds left a comment

Choose a reason for hiding this comment

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

Why is this changed needed? Can we provide an explanation in the PR description?

@aelovikov-intel
Copy link
Contributor Author

That is described in details in

// This is an ongoing experimental activity in its early stage. No code outside
// this project must rely on the behavior of this header file - keep using
// <sycl/sycl.hpp>.
//
// Short-term plan/action items (in no particular order):
// * Update more tests to use this instead of full <sycl/sycl.hpp>.
// * Refactor includes so that transitive dependencies don't bring as much as
// they currently do.
// * Determine what else should be included here.

and

## sycl/detail/core.hpp
While SYCL specification dictates that the only user-visible interface is
`<sycl/sycl.hpp>` header file we found out that as the implementation and
multiple extensions grew, the compile time was getting worse and worse,
negatively affecting our CI turnaround time. We are just starting some efforts
to create a much smaller set of basic feature needed for every SYCL end-to-end
test/program so that this issue could be somewhat mitigated. This activity is in
its early stage and NO production code should rely on it. It WILL be changed as
we go with our experiments. For any code outside of this project only the
`<sycl/sycl.hpp>` must be used until we feel confident to propose an extension
that can provide an alternative.

@sommerlukas
Copy link
Contributor

That is described in details in

// This is an ongoing experimental activity in its early stage. No code outside
// this project must rely on the behavior of this header file - keep using
// <sycl/sycl.hpp>.
//
// Short-term plan/action items (in no particular order):
// * Update more tests to use this instead of full <sycl/sycl.hpp>.
// * Refactor includes so that transitive dependencies don't bring as much as
// they currently do.
// * Determine what else should be included here.

and

## sycl/detail/core.hpp
While SYCL specification dictates that the only user-visible interface is
`<sycl/sycl.hpp>` header file we found out that as the implementation and
multiple extensions grew, the compile time was getting worse and worse,
negatively affecting our CI turnaround time. We are just starting some efforts
to create a much smaller set of basic feature needed for every SYCL end-to-end
test/program so that this issue could be somewhat mitigated. This activity is in
its early stage and NO production code should rely on it. It WILL be changed as
we go with our experiments. For any code outside of this project only the
`<sycl/sycl.hpp>` must be used until we feel confident to propose an extension
that can provide an alternative.

Sounds like a good addition!

Can you please add links to core.hpp and that section of the README to the PR description, so it's included in the commit message?

@aelovikov-intel
Copy link
Contributor Author

Can you please add links to core.hpp and that section of the README to the PR description, so it's included in the commit message?

I think that would be too much overhead to keep adding them to all the PRs... Do you really need it?

Copy link
Contributor

@sommerlukas sommerlukas left a comment

Choose a reason for hiding this comment

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

Changes LGTM.

Minor nit: There's a few files with an extra blank line after #include <sycl/detail/core.hpp>, but could probably go in as-is.

@aelovikov-intel
Copy link
Contributor Author

Changes LGTM.

Minor nit: There's a few files with an extra blank line after #include <sycl/detail/core.hpp>, but could probably go in as-is.

Some of them were on purpose - to prevent clang-format from moving core.hpp to after other sycl/* includes. Others just copy-pasted that blank line from those where it was needed. Overall, I think it can go as-is too. I wouldn't be surprised if we'll have to modify the files later on as the core.hpp will get smaller.

@aelovikov-intel aelovikov-intel merged commit 4074cc2 into intel:sycl Mar 25, 2024
@aelovikov-intel aelovikov-intel deleted the core-fusion branch April 19, 2024 22:00
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.

3 participants