Closed fknorr closed 7 months ago
Check-perf-impact results: (4c65f1399a47e0eb1340f63004745b17)
:question: No new benchmark data submitted. :question:
Please re-run the microbenchmarks and include the results if your commit could potentially affect performance.
Github Actions seems to mark this PR as failing :x: when the SimSYCL runs emit any warning, so I resolved all of them:
memcpy
'ing over hydration_id
which is not a POD type. I've used the opportunity to re-define all numerical _id
types as individual POD structs and get rid of the PhantomType
template (which I always found annoying because compiler messages would read celerity::detail::PhantomType<size_t, celerity::blah_blah_node_id>
instead of just celerity::detail::node_id
)small_vector
dependency to the latest HEAD
to fix a GCC -Wmaybe-uninitialized
in tests that were copy-constructing small_vector
sCuriously, the hipSYCL builds still emit -Wunknown-cuda-version
but this does not seem to affect the build status.
LGTM, I'd maybe squash some of the commits before merging (e.g. all the dependency version bumps).
I'd rather keep those separate, they are all relevant to the "internal changelog".
It's pretty neat to see the times for "Build and Install Celerity" in the CI run for SimSYCL.
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.
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