-
Notifications
You must be signed in to change notification settings - Fork 18
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
Add support for SimSYCL (and GCC / C++20 / Sanitizers) #238
Conversation
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.
Very nice! Brings us much closer to providing a Celerity development experience that works almost "everywhere".
Check-perf-impact results: (4c65f1399a47e0eb1340f63004745b17) ❓ No new benchmark data submitted. ❓ |
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.
clang-tidy made some suggestions
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.
clang-tidy made some suggestions
fd6a234
to
2ee5d4a
Compare
Github Actions seems to mark this PR as failing ❌ when the SimSYCL runs emit any warning, so I resolved all of them:
Curiously, the hipSYCL builds still emit |
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.
LGTM, I'd maybe squash some of the commits before merging (e.g. all the dependency version bumps).
It's pretty neat to see the times for "Build and Install Celerity" in the CI run for SimSYCL.
For GCC / C++20 compatibility
For GCC / C++20 compatibility
For GCC / C++20 compatibility
I'd rather keep those separate, they are all relevant to the "internal changelog".
They do look good, but that's mostly due to ccache. Build times for the other SYCL impls are not much longer. Except hipSYCL + Ubuntu 23.04? I wonder what's going on 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.
Very cool!
To resolve a GCC -Wmaybe-uninitialized within small_vectors in tests.
This resolves warnings by GCC about memcpy'ing over types with private members (-Wclass-memaccess).
This adds SimSYCL as a third supported SYCL implementation. SimSYCL executes kernels synchronously on the host and therefore has support for AddressSanitizer and LeakSanitizer, which we can now use to find UB in Celerity from within our CI.
SimSYCL requires C++20, so our code had to be adapted in a few places and 3rd-party dependencies had to be upgraded to be compatible with the new standard.
Until now all our CI builds have been made with Clang derivatives, so I opted for performing the SimSYCL build with GCC to broaden our compiler support at the same time. This required some further patches, either to work around GCC bugs or to be compliant where Clang was overly permissive.
Finally, SimSYCL + AddressSanitizer actually managed to find two use-after-scope errors in the Celerity tests, which were fixed.
Possible follow-up changes