Skip to main content

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)
    • any target with the generic SSCP compiler (experimental, -DACPP_TARGETS=generic, which is the default)
  • DPC++ ≥ revision ad494e9d
  • 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):

SYCLSYCL versionOSGPUBuild type
DPC++ad494e9d (CRT 24.13.29138.7, L0 1.17.0)Ubuntu 22.04Intel Arc A770Debug, Release
DPC++HEAD (CRT 24.13.29138.7, L0 1.17.0)Ubuntu 24.04Intel Arc A770Debug, Release
AdaptiveCppv24.06.0 (Clang 14.0, CUDA 11.8.0)Ubuntu 22.04NVIDIA RTX 2070Debug, Release
AdaptiveCppHEAD (Clang 18.0, CUDA 12.5.0)*Ubuntu 24.04NVIDIA RTX 2070Debug, Release
SimSYCLHEAD (GCC 13.2)Ubuntu 24.04(None)Debug, Release
SimSYCLHEAD (Clang 20.1.8)Windows(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