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)
    • the generic SSCP target cannot be supported yet and must be disabled when building Celerity applications.
  • DPC++ ≥ revision 89327e0a
  • 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++89327e0a (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

* 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