Officially Supported Platforms
The most recent version of Celerity aims to support the following environments.
SYCL Implementations
- AdaptiveCpp (formerly hipSYCL) ≥ revision
v24.06.0
, with- CUDA ≥ 11.0
- Clang ≥ 14.0 for CUDA < 12.0, Clang ≥ 16.0 for CUDA ≥ 12.0
- on NVIDIA hardware with compute capability ≥ 7.0 (
-DACPP_TARGETS=cuda:*
) - or on CPUs via OpenMP (
-DACPP_TARGETS=omp
, implicit) - the
generic
SSCP target cannot be supported yet and must be disabled when building Celerity applications.
- DPC++ ≥ revision
89327e0a
- Intel Compute Runtime ≥ 24.13.29138.7
- oneAPI Level Zero ≥ 1.17.0
- on integrated and dedicated Intel GPUs
- SimSYCL HEAD
Other hardware or backend configurations might work, but have not been tested or verified.
ComputeCpp is no longer supported since its discontinuation.
MPI Implementations
Even though we primarily test with OpenMPI, Celerity should be compatible with any MPI 2 implementation.
Note that the latest version of Celerity breaks with OpenMPI < 4.0.2 due to a known bug around
mpi_assert_allow_overtaking
. Make sure to upgrade your version of OpenMPI if you're currently running 4.0.1 or older.
Continuously Tested Configurations
We automatically verify Celerity's build process and test suites against a select number of system configurations.
Those are (CRT = Intel Compute Runtime, L0 = oneAPI Level Zero):
SYCL | SYCL version | OS | GPU | Build type |
---|---|---|---|---|
DPC++ | 89327e0a (CRT 24.13.29138.7, L0 1.17.0) | Ubuntu 22.04 | Intel Arc A770 | Debug, Release |
DPC++ | HEAD (CRT 24.13.29138.7, L0 1.17.0) | Ubuntu 24.04 | Intel Arc A770 | Debug, Release |
AdaptiveCpp | v24.06.0 (Clang 14.0, CUDA 11.8.0) | Ubuntu 22.04 | NVIDIA RTX 2070 | Debug, Release |
AdaptiveCpp | HEAD (Clang 18.0, CUDA 12.5.0)* | Ubuntu 24.04 | NVIDIA RTX 2070 | Debug, Release |
SimSYCL | HEAD (GCC 13.2) | Ubuntu 24.04 | (None) | Debug, Release |
* currently requires a patch for an illegal macro definition in CUDA:
--- a/include/crt/host_defines.h 2023-04-03 14:40:16.471254404 +0200
+++ b/include/crt/host_defines.h 2023-03-23 22:07:22.000000000 +0100
@@ -70,7 +70,7 @@
#define __no_return__ \
__attribute__((noreturn))
-#if defined(__CUDACC__) || defined(__CUDA_ARCH__) || defined(__CUDA_LIBDEVICE__)
+#if (defined(__CUDACC__) || defined(__CUDA_ARCH__) || defined(__CUDA_LIBDEVICE__)) && !defined(__clang__)
/* gcc allows users to define attributes with underscores,
e.g., __attribute__((__noinline__)).
Consider a non-CUDA source file (e.g. .cpp) that has the