CI/CD
The CI/CD pipelines run the ReProspect tests and examples for a variety of configurations.
The current CI/CD strategy matrix covers:
many CUDA versions
many architectures
nvccorclangas CUDA compiler
matrix.extend(from_config(Config(
cuda_version='12.8.1',
ubuntu_version='24.04',
python_version='3.12',
compilers={'CXX': Compiler(ID='GNU', version='13'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=7, minor=0),
platforms=(Platform.from_str('linux/amd64'), Platform.from_str('linux/arm64')),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.8.1',
ubuntu_version='24.04',
python_version='3.13',
compilers={'CXX': Compiler(ID='GNU', version='14'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=9, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.1.0',
ubuntu_version='24.04',
python_version='3.13',
compilers={'CXX': Compiler(ID='GNU', version='14'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=12, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
use_for_documentation=True,
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.1.0',
ubuntu_version='24.04',
python_version='3.13',
compilers={'CXX': Compiler(ID='GNU', version='14'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=12, minor=0),
platforms=(Platform.from_str('linux/arm64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.6.3',
ubuntu_version='22.04',
python_version='3.10',
compilers={'CXX': Compiler(ID='GNU', version='12'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=7, minor=5),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.8.1',
ubuntu_version='24.04',
python_version='3.12',
compilers={'CXX': Compiler(ID='GNU', version='13'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=8, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.6.3',
ubuntu_version='24.04',
python_version='3.12',
compilers={'CXX': Compiler(ID='GNU', version='13'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=8, minor=9),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.0.0',
ubuntu_version='24.04',
python_version='3.11',
compilers={'CXX': Compiler(ID='GNU', version='14'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=8, minor=6),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.8.1',
ubuntu_version='24.04',
python_version='3.12',
compilers={'CXX': Compiler(ID='Clang', version='19'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=7, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.1.0',
ubuntu_version='24.04',
python_version='3.14',
compilers={'CXX': Compiler(ID='GNU', version='14'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=10, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.2.0',
ubuntu_version='24.04',
python_version='3.14',
compilers={'CXX': Compiler(ID='GNU', version='14'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=10, minor=0),
platforms=(Platform.from_str('linux/amd64'), Platform.from_str('linux/arm64')),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.0.0',
ubuntu_version='24.04',
python_version='3.12',
compilers={'CXX': Compiler(ID='Clang', version='20'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=12, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.1.0',
ubuntu_version='24.04',
python_version='3.14',
compilers={'CXX': Compiler(ID='Clang', version='21'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=10, minor=3),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.1.0',
ubuntu_version='24.04',
python_version='3.13',
compilers={'CXX': Compiler(ID='Clang', version='21'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=12, minor=1),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.8.1',
ubuntu_version='24.04',
python_version='3.11',
compilers={'CXX': Compiler(ID='Clang', version='21')},
compute_capability=ComputeCapability(major=12, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='12.8.1',
ubuntu_version='24.04',
python_version='3.12',
compilers={'CXX': Compiler(ID='Clang', version='22')},
compute_capability=ComputeCapability(major=9, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.1.0',
ubuntu_version='24.04',
python_version='3.13',
compilers={'CXX': Compiler(ID='Clang', version='22')},
compute_capability=ComputeCapability(major=10, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.2.1',
ubuntu_version='24.04',
python_version='3.14',
compilers={'CXX': Compiler(ID='Clang', version='21'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=12, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
matrix.extend(from_config(Config(
cuda_version='13.3.0',
ubuntu_version='26.04',
python_version='3.14',
compilers={'CXX': Compiler(ID='GNU', version='15'), 'CUDA': Compiler(ID='NVIDIA')},
compute_capability=ComputeCapability(major=12, minor=0),
platforms=(Platform.from_str('linux/amd64'),),
), deps=deps))
The CI/CD pipelines run the tests and examples in Docker containers. For each entry in the strategy matrix, the CI/CD pipeline builds two images:
the first image contains the dependencies needed to build and run the ReProspect tests for the given configuration;
the second image contains, in addition, a Kokkos installation (currently 5.1.0) and a compatible Kokkos Tools installation, as needed to run the ReProspect examples.
The CI/CD pipelines configure, build and install Kokkos by running the script docker/kokkos.sh that sets the CMake arguments as follows:
# When nvcc is used as CUDA compiler, use 'nvcc_wrapper'.
if [[ "${KOKKOS_CUDA_COMPILER}" == "nvcc" ]];then
cmake_args_kokkos=(
"-DCMAKE_CXX_COMPILER=/opt/kokkos-sources/kokkos-${KOKKOS_SHA}/bin/nvcc_wrapper"
)
export NVCC_WRAPPER_DEFAULT_COMPILER=${KOKKOS_CXX_COMPILER}
else
cmake_args_kokkos=(
"-DCMAKE_CXX_COMPILER=${KOKKOS_CXX_COMPILER}"
"-DCMAKE_CUDA_COMPILER=${KOKKOS_CUDA_COMPILER}"
)
fi
cmake_args_kokkos+=(
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_CXX_STANDARD=20"
"-DBUILD_SHARED_LIBS=ON"
"-DCMAKE_CXX_EXTENSIONS=OFF"
"-DKokkos_ENABLE_SERIAL=ON"
"-DKokkos_ENABLE_CUDA=ON"
"-DKokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC=ON"
"-DKokkos_ARCH_${KOKKOS_ARCH}=ON"
"-DKokkos_ENABLE_COMPILE_AS_CMAKE_LANGUAGE=ON"
"-DCMAKE_INSTALL_PREFIX=/opt/kokkos-${KOKKOS_SHA}/${KOKKOS_INSTALL_SUFFIX}"
)
The full list of images the CI/CD pipelines build is as follows:
ghcr.io/uliegecsm/reprospect/cuda-clang-19-nvidia-py3.12:12.8.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-19-nvidia-py3.12-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-volta70
ghcr.io/uliegecsm/reprospect/cuda-clang-20-nvidia-py3.12:13.0.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-20-nvidia-py3.12-kokkos-5.1.0:13.0.0-devel-ubuntu24.04-blackwell120
ghcr.io/uliegecsm/reprospect/cuda-clang-21-clang-py3.11:12.8.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-21-clang-py3.11-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-blackwell120
ghcr.io/uliegecsm/reprospect/cuda-clang-21-nvidia-py3.13:13.1.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-21-nvidia-py3.13-kokkos-5.1.0:13.1.0-devel-ubuntu24.04-blackwell121
ghcr.io/uliegecsm/reprospect/cuda-clang-21-nvidia-py3.14:13.1.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-21-nvidia-py3.14-kokkos-5.1.0:13.1.0-devel-ubuntu24.04-blackwell103
ghcr.io/uliegecsm/reprospect/cuda-clang-21-nvidia-py3.14:13.2.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-21-nvidia-py3.14-kokkos-5.1.0:13.2.1-devel-ubuntu24.04-blackwell120
ghcr.io/uliegecsm/reprospect/cuda-clang-22-clang-py3.12:12.8.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-22-clang-py3.12-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-hopper90
ghcr.io/uliegecsm/reprospect/cuda-clang-22-clang-py3.13:13.1.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-clang-22-clang-py3.13-kokkos-5.1.0:13.1.0-devel-ubuntu24.04-blackwell100
ghcr.io/uliegecsm/reprospect/cuda-gnu-12-nvidia-py3.10:12.6.3-devel-ubuntu22.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-12-nvidia-py3.10-kokkos-5.1.0:12.6.3-devel-ubuntu22.04-turing75
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12:12.6.3-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12-kokkos-5.1.0:12.6.3-devel-ubuntu24.04-ada89
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12:12.8.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-ampere80
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12:12.8.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-volta70
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12:12.8.1-devel-ubuntu24.04-arm64
ghcr.io/uliegecsm/reprospect/cuda-gnu-13-nvidia-py3.12-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-volta70-arm64
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.11:13.0.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.11-kokkos-5.1.0:13.0.0-devel-ubuntu24.04-ampere86
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.13:12.8.1-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.13-kokkos-5.1.0:12.8.1-devel-ubuntu24.04-hopper90
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.13:13.1.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.13-kokkos-5.1.0:13.1.0-devel-ubuntu24.04-blackwell120
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.13:13.1.0-devel-ubuntu24.04-arm64
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.13-kokkos-5.1.0:13.1.0-devel-ubuntu24.04-blackwell120-arm64
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.14:13.1.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.14-kokkos-5.1.0:13.1.0-devel-ubuntu24.04-blackwell100
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.14:13.2.0-devel-ubuntu24.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.14-kokkos-5.1.0:13.2.0-devel-ubuntu24.04-blackwell100
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.14:13.2.0-devel-ubuntu24.04-arm64
ghcr.io/uliegecsm/reprospect/cuda-gnu-14-nvidia-py3.14-kokkos-5.1.0:13.2.0-devel-ubuntu24.04-blackwell100-arm64
ghcr.io/uliegecsm/reprospect/cuda-gnu-15-nvidia-py3.14:13.3.0-devel-ubuntu26.04
ghcr.io/uliegecsm/reprospect/cuda-gnu-15-nvidia-py3.14-kokkos-5.1.0:13.3.0-devel-ubuntu26.04-blackwell120
These images are public and can be pulled anonymously from the GitHub Container Registry:
docker pull ghcr.io/uliegecsm/reprospect/IMAGE_NAME