AdaptiveCpp 23.10.0
Highlights
This release contains several major features, and introduces a major shift in the project's capabilities:
- New project name: AdaptiveCpp. This release is the first release with the new name, and contains renamed, user-facing components. This includes e.g. renamed compiler (
acpp
), compiler flags (e.g.--acpp-targets
), cmake integration and more. The old name is still supported for backward compatibility during a transitional period. For details on why this renaming occured, see #1147 - The world's first single-pass SYCL compiler (
--acpp-targets=generic
): This release is the first release to contain our new single-pass compiler. This is the world's only SYCL compiler which does not need to parse the code multiple times to generate a binary. Instead, during the regular host compilation, LLVM IR for kernels is extracted and embedded in the binary. At runtime, this IR is then JIT-compiled to whatever is needed (currently supported is PTX, amdgcn and SPIR-V)- As such, this new compiler design is also the first SYCL compiler to introduce a unified code representation across backends
- "Compile once, run anywhere" - the new design guarantees that every binary generated by
acpp --acpp-targets=generic
can directly be executed on all supported GPUs from Intel, NVIDIA and AMD. The new approach can dramatically reduce compile times, especially when many devices need to be targeted since the code still is only parsed a single time. - See the paper for more details: https://dl.acm.org/doi/10.1145/3585341.3585351
- The world's first SYCL implementation to support automatic offloading of C++ parallel STL algorithms (
--acpp-stdpar
). This heterogeneous programming model was until now primarily supported by NVIDIA's nvc++ for NVIDIA GPUs. AdaptiveCpp not only supports it for NVIDIA, AMD and Intel GPUs, but also conveniently allows to generate a binary that can dispatch to all supported devices using the new single-pass compiler. See here for details on this new experimental feature: https://github.com/AdaptiveCpp/AdaptiveCpp/blob/develop/doc/stdpar.md - Production support for Intel GPUs through the new single-pass compiler
- New OpenCL backend - this new backend supports targeting OpenCL SPIR-V devices, such as Intel's CPU and GPU OpenCL runtimes, bringing the total number of supported backends to five.
- Many bug fixes and performance optimizations!
What's changed
The full list of changes it too long for release pages; please see here for a comprehensive list of all changes:
Full Changelog: v0.9.4...v23.10.0
New Contributors
- @RaulPPelaez made their first contribution in #967
- @Momellouky made their first contribution in #1017
- @tdavidcl made their first contribution in #965
- @tom91136 made their first contribution in #1065
- @0dminnimda made their first contribution in #1080
- @eirrgang made their first contribution in #1069
- @jamesreinders made their first contribution in #1157
- @bashbaug made their first contribution in #1163
- @karolherbst made their first contribution in #1177
- @Calandracas606 made their first contribution in #1204
- @gogo2 made their first contribution in #1209