diff --git a/.devcontainer/cuda11.8-conda/devcontainer.json b/.devcontainer/cuda11.8-conda/devcontainer.json index 033251e3..0b5e7406 100644 --- a/.devcontainer/cuda11.8-conda/devcontainer.json +++ b/.devcontainer/cuda11.8-conda/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "11.8", "PYTHON_PACKAGE_MANAGER": "conda", - "BASE": "rapidsai/devcontainers:24.08-cpp-cuda11.8-mambaforge-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-cuda11.8-mambaforge-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda11.8-conda" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda11.8-conda" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda11.8-pip/devcontainer.json b/.devcontainer/cuda11.8-pip/devcontainer.json index 27016dbb..47d2b224 100644 --- a/.devcontainer/cuda11.8-pip/devcontainer.json +++ b/.devcontainer/cuda11.8-pip/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "11.8", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:24.08-cpp-cuda11.8-ucx1.15.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-cuda11.8-ucx1.17.0-openmpi-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda11.8-pip" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda11.8-pip" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda12.0-conda/devcontainer.json b/.devcontainer/cuda12.0-conda/devcontainer.json index 5f5ad18a..aaafda77 100644 --- a/.devcontainer/cuda12.0-conda/devcontainer.json +++ b/.devcontainer/cuda12.0-conda/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "12.0", "PYTHON_PACKAGE_MANAGER": "conda", - "BASE": "rapidsai/devcontainers:24.08-cpp-mambaforge-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-mambaforge-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.0-conda" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda12.0-conda" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda12.0-pip/devcontainer.json b/.devcontainer/cuda12.0-pip/devcontainer.json index 9bea22d5..f3d0688d 100644 --- a/.devcontainer/cuda12.0-pip/devcontainer.json +++ b/.devcontainer/cuda12.0-pip/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "12.0", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:24.08-cpp-cuda12.0-ucx1.15.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-cuda12.0-ucx1.17.0-openmpi-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.0-pip" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda12.0-pip" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda12.2-conda/devcontainer.json b/.devcontainer/cuda12.2-conda/devcontainer.json index 5c1fceaf..3011015a 100644 --- a/.devcontainer/cuda12.2-conda/devcontainer.json +++ b/.devcontainer/cuda12.2-conda/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "12.2", "PYTHON_PACKAGE_MANAGER": "conda", - "BASE": "rapidsai/devcontainers:24.08-cpp-mambaforge-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-mambaforge-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.2-conda" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda12.2-conda" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda12.2-pip/devcontainer.json b/.devcontainer/cuda12.2-pip/devcontainer.json index f79ed098..8e1898e2 100644 --- a/.devcontainer/cuda12.2-pip/devcontainer.json +++ b/.devcontainer/cuda12.2-pip/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "12.2", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:24.08-cpp-cuda12.2-ucx1.15.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-cuda12.2-ucx1.17.0-openmpi-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.2-pip" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda12.2-pip" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda12.5-conda/devcontainer.json b/.devcontainer/cuda12.5-conda/devcontainer.json index fa822661..e840eb04 100644 --- a/.devcontainer/cuda12.5-conda/devcontainer.json +++ b/.devcontainer/cuda12.5-conda/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "12.5", "PYTHON_PACKAGE_MANAGER": "conda", - "BASE": "rapidsai/devcontainers:24.08-cpp-mambaforge-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-mambaforge-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.5-conda" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda12.5-conda" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.devcontainer/cuda12.5-pip/devcontainer.json b/.devcontainer/cuda12.5-pip/devcontainer.json index edff5afe..1d520184 100644 --- a/.devcontainer/cuda12.5-pip/devcontainer.json +++ b/.devcontainer/cuda12.5-pip/devcontainer.json @@ -5,13 +5,13 @@ "args": { "CUDA": "12.5", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:24.08-cpp-cuda12.5-ucx1.15.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:24.10-cpp-cuda12.5-ucx1.17.0-openmpi-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.5-pip" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.10-cuda12.5-pip" ], "hostRequirements": {"gpu": "optional"}, "features": { diff --git a/.github/workflows/build-all-rapids-repos.yml b/.github/workflows/build-all-rapids-repos.yml index 7582aa2b..1d6a0fae 100644 --- a/.github/workflows/build-all-rapids-repos.yml +++ b/.github/workflows/build-all-rapids-repos.yml @@ -27,7 +27,7 @@ jobs: if: needs.check-event.outputs.ok == 'true' needs: check-event secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@branch-24.08 + uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@branch-24.10 permissions: actions: read packages: read diff --git a/USAGE.md b/USAGE.md index cbd23fda..d389dd32 100644 --- a/USAGE.md +++ b/USAGE.md @@ -19,11 +19,11 @@ The features that comprise the image are noted in the image tags. If no version The pre-built images can be used as the `"image"`, or as the base of a Dockerfile in `"build"`, in `devcontainer.json`: -
devcontainer.json using pre-built image
{
"image": "rapidsai/devcontainers:24.08-cpp-llvm16-cuda12.0-nvhpc23.5-ubuntu22.04",
"hostRequirements": { "gpu": true },
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind"
}
+
devcontainer.json using pre-built image
{
"image": "rapidsai/devcontainers:24.10-cpp-llvm16-cuda12.0-nvhpc23.5-ubuntu22.04",
"hostRequirements": { "gpu": true },
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind"
}
You can also build a custom devcontainer by composing individual features: -
devcontainer.json using individual features
{
"image": "ubuntu:22.04",
"features": {
"ghcr.io/rapidsai/devcontainers/features/cmake:24.8": {},
"ghcr.io/rapidsai/devcontainers/features/ninja:24.8": {},
"ghcr.io/rapidsai/devcontainers/features/sccache:24.8": {
"version": "0.5.4"
}
},
"overrideFeatureInstallOrder": [
"ghcr.io/rapidsai/devcontainers/features/cmake",
"ghcr.io/rapidsai/devcontainers/features/ninja",
"ghcr.io/rapidsai/devcontainers/features/sccache"
],
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind"
}
+
devcontainer.json using individual features
{
"image": "ubuntu:22.04",
"features": {
"ghcr.io/rapidsai/devcontainers/features/cmake:24.10": {},
"ghcr.io/rapidsai/devcontainers/features/ninja:24.10": {},
"ghcr.io/rapidsai/devcontainers/features/sccache:24.10": {
"version": "0.5.4"
}
},
"overrideFeatureInstallOrder": [
"ghcr.io/rapidsai/devcontainers/features/cmake",
"ghcr.io/rapidsai/devcontainers/features/ninja",
"ghcr.io/rapidsai/devcontainers/features/sccache"
],
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind"
}
> **NOTE:** Feature updates published since your most recent image build will invalidate your docker image layer cache, meaning it can take the [devcontainers CLI](https://github.com/devcontainers/cli) longer to initialize containers composed from individual features. diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 40500fef..d30992d3 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -22,7 +22,7 @@ NEXT_MINOR=$(echo $NEXT_FULL_TAG | awk '{split($0, a, "."); print a[2]}') NEXT_PATCH=$(echo $NEXT_FULL_TAG | awk '{split($0, a, "."); print a[3]}') NEXT_SHORT_TAG=${NEXT_MAJOR}.${NEXT_MINOR} NEXT_FULL_TAG=${NEXT_MAJOR}.${NEXT_MINOR}.${NEXT_PATCH} -NEXT_UCX_PY_VERSION="$(curl -sL https://version.gpuci.io/rapids/${NEXT_SHORT_TAG})" +NEXT_UCXX_SHORT_TAG="$(curl -sL https://version.gpuci.io/rapids/${NEXT_SHORT_TAG})" # Need to distutils-normalize the versions for some use cases CURRENT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${CURRENT_SHORT_TAG}'))") @@ -46,7 +46,7 @@ for file in $(find .devcontainer -name devcontainer.json); do done sed_runner "s/branch-[[:digit:]]\{2\}\.[[:digit:]]\+/branch-${NEXT_SHORT_TAG}/g" ./features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml -sed_runner "s/branch-0.[[:digit:]]\+/branch-${NEXT_UCX_PY_VERSION}/g" ./features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml +sed_runner "s/branch-0.[[:digit:]]\+/branch-${NEXT_UCXX_SHORT_TAG}/g" ./features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml for file in $(find features -name devcontainer-feature.json); do tmp=$(mktemp) diff --git a/features/src/cccl-dev/devcontainer-feature.json b/features/src/cccl-dev/devcontainer-feature.json index a352a387..16a3f589 100644 --- a/features/src/cccl-dev/devcontainer-feature.json +++ b/features/src/cccl-dev/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "NVIDIA CCCL development utilities", "id": "cccl-dev", - "version": "24.8.1", + "version": "24.10.0", "description": "A feature to install NVIDIA CCCL development utilities", "options": { "litVersion": { diff --git a/features/src/cmake/devcontainer-feature.json b/features/src/cmake/devcontainer-feature.json index 3113c143..61a59a85 100644 --- a/features/src/cmake/devcontainer-feature.json +++ b/features/src/cmake/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "CMake", "id": "cmake", - "version": "24.8.1", + "version": "24.10.0", "description": "A feature to install CMake", "options": { "version": { diff --git a/features/src/cuda/devcontainer-feature.json b/features/src/cuda/devcontainer-feature.json index b1303314..69178cfe 100644 --- a/features/src/cuda/devcontainer-feature.json +++ b/features/src/cuda/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "CUDA Toolkit", "id": "cuda", - "version": "24.8.2", + "version": "24.10.0", "description": "A feature to install the NVIDIA CUDA Toolkit", "options": { "version": { diff --git a/features/src/gcc/devcontainer-feature.json b/features/src/gcc/devcontainer-feature.json index 3bc51d0a..fb8044b9 100644 --- a/features/src/gcc/devcontainer-feature.json +++ b/features/src/gcc/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "GCC", "id": "gcc", - "version": "24.8.1", + "version": "24.10.0", "description": "A feature to install gcc", "options": { "version": { diff --git a/features/src/gitlab-cli/devcontainer-feature.json b/features/src/gitlab-cli/devcontainer-feature.json index 6e9cea34..e07494ef 100644 --- a/features/src/gitlab-cli/devcontainer-feature.json +++ b/features/src/gitlab-cli/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "gitlab-cli", - "version": "24.8.1", + "version": "24.10.0", "name": "GitLab CLI", "documentationURL": "https://github.com/rapidsai/devcontainers/features/tree/main/src/gitlab-cli", "description": "Installs the GitLab CLI. Auto-detects latest version and installs needed dependencies.", diff --git a/features/src/llvm/devcontainer-feature.json b/features/src/llvm/devcontainer-feature.json index 0745dc7c..da88710b 100644 --- a/features/src/llvm/devcontainer-feature.json +++ b/features/src/llvm/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "LLVM compilers and tools", "id": "llvm", - "version": "24.8.2", + "version": "24.10.1", "description": "A feature to install LLVM compilers and tools", "options": { "version": { diff --git a/features/src/mambaforge/devcontainer-feature.json b/features/src/mambaforge/devcontainer-feature.json index 5fe11349..cc57822b 100644 --- a/features/src/mambaforge/devcontainer-feature.json +++ b/features/src/mambaforge/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "Mambaforge", "id": "mambaforge", - "version": "24.8.1", + "version": "24.10.0", "description": "A feature to install mambaforge", "options": { "version": { diff --git a/features/src/ninja/devcontainer-feature.json b/features/src/ninja/devcontainer-feature.json index 5183fd69..47eb0b00 100644 --- a/features/src/ninja/devcontainer-feature.json +++ b/features/src/ninja/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "Ninja build", "id": "ninja", - "version": "24.8.2", + "version": "24.10.0", "description": "A feature to install ninja-build", "options": { "version": { diff --git a/features/src/nvhpc/devcontainer-feature.json b/features/src/nvhpc/devcontainer-feature.json index 1edd98b7..d8c61b80 100644 --- a/features/src/nvhpc/devcontainer-feature.json +++ b/features/src/nvhpc/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "NVHPC SDK", "id": "nvhpc", - "version": "24.8.2", + "version": "24.10.0", "description": "A feature to install the NVHPC SDK", "options": { "version": { diff --git a/features/src/oneapi/devcontainer-feature.json b/features/src/oneapi/devcontainer-feature.json index 9ed4f484..ea971222 100644 --- a/features/src/oneapi/devcontainer-feature.json +++ b/features/src/oneapi/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "Intel oneapi toolchain", "id": "oneapi", - "version": "24.8.1", + "version": "24.10.0", "description": "A feature to install the Intel oneapi toolchain", "options": { "version": { diff --git a/features/src/openmpi/devcontainer-feature.json b/features/src/openmpi/devcontainer-feature.json index c0773ca0..a8bc4468 100644 --- a/features/src/openmpi/devcontainer-feature.json +++ b/features/src/openmpi/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "OpenMPI", "id": "openmpi", - "version": "24.8.1", + "version": "24.10.0", "description": "A feature to install OpenMPI with optional CUDA and UCX support", "options": { "version": { diff --git a/features/src/rapids-build-utils/devcontainer-feature.json b/features/src/rapids-build-utils/devcontainer-feature.json index d180b627..b6792894 100644 --- a/features/src/rapids-build-utils/devcontainer-feature.json +++ b/features/src/rapids-build-utils/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "NVIDIA RAPIDS devcontainer build utilities", "id": "rapids-build-utils", - "version": "24.8.16", + "version": "24.10.10", "description": "A feature to install the RAPIDS devcontainer build utilities", "containerEnv": { "BASH_ENV": "/etc/bash.bash_env" diff --git a/features/src/rapids-build-utils/install.sh b/features/src/rapids-build-utils/install.sh index 85bdbedb..893d1d7a 100644 --- a/features/src/rapids-build-utils/install.sh +++ b/features/src/rapids-build-utils/install.sh @@ -33,13 +33,22 @@ fi source /etc/lsb-release; -if [[ ! "23.04" > "${DISTRIB_RELEASE}" ]]; then - BREAK_PACKAGES="--break-system-packages"; +declare -a _PIP_INSTALL_ARGS=() +declare -a _PIP_UPGRADE_ARGS=(--upgrade) + +if [[ "${DISTRIB_RELEASE}" > "22.04" ]]; then + _PIP_INSTALL_ARGS+=(--break-system-packages); + if [[ "${DISTRIB_RELEASE}" > "23.04" ]]; then + _PIP_UPGRADE_ARGS+=(--ignore-installed); + fi fi -# Install the rapids dependency file generator and conda-merge -/usr/bin/python3 -m pip install $BREAK_PACKAGES -U pip; -/usr/bin/python3 -m pip install $BREAK_PACKAGES 'rapids-dependency-file-generator<1.14' conda-merge toml; +/usr/bin/python3 -m pip install "${_PIP_INSTALL_ARGS[@]}" "${_PIP_UPGRADE_ARGS[@]}" pip; +# Install RAPIDS dependency file generator, conda-merge, and toml +/usr/bin/python3 -m pip install "${_PIP_INSTALL_ARGS[@]}" \ + 'rapids-dependency-file-generator<1.14' \ + conda-merge \ + toml; # Install RAPIDS build utility scripts to /opt/ diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/make-pip-dependencies.sh b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/make-pip-dependencies.sh index af4b818d..4a1ec400 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/make-pip-dependencies.sh +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/make-pip-dependencies.sh @@ -79,6 +79,7 @@ make_pip_dependencies() { cuda="${cuda_version}" cuda_suffixed=true py="${python_version}" + use_cuda_wheels=false ); # add extra arguments (if there are conflicts, e.g. 'py=3.10;py=3.11', it's fine... the last one will win) diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/python-conda-pkg-names.sh b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/python-conda-pkg-names.sh index e0c8d55d..6cbbba61 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/python-conda-pkg-names.sh +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/python-conda-pkg-names.sh @@ -37,15 +37,16 @@ python_conda_pkg_names() { if test -d ~/"${!repo_path:-}/.git"; then # the regex will continue until morale improves - find ~/"${!repo_path}/" \ - -type f -name 'meta.yaml' \ - ! -path '*/.conda/*' \ - ! -path '*/build/*' \ - ! -path '*/_skbuild/*' \ - -exec grep -E 'name: ?' {} \; \ - 2>/dev/null \ - | tr -d '[:blank:]' \ - | cut -d':' -f2 \ + find ~/"${!repo_path}/" \ + -type f -name 'meta.yaml' \ + ! -path '*/.conda/*' \ + ! -path '*/build/*' \ + ! -path '*/_skbuild/*' \ + ! -path '*/target/cmake-build/*' \ + -exec grep -E 'name: ?' {} \; \ + 2>/dev/null \ + | tr -d '[:blank:]' \ + | cut -d':' -f2 \ ; fi done diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/cpp.build.tmpl.sh b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/cpp.build.tmpl.sh index 4c79bffa..7bd7448e 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/cpp.build.tmpl.sh +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/cpp.build.tmpl.sh @@ -17,6 +17,9 @@ build_${CPP_LIB}_cpp() { local -; set -euo pipefail; + # Stop the sccache server in case we need to reload credentials before starting the next build + sccache --stop-server >/dev/null 2>&1 || true; + eval "$(\ PARALLEL_LEVEL=${PARALLEL_LEVEL:-$(nproc --all)} \ MAX_TOTAL_SYSTEM_MEMORY="${MAX_TOTAL_SYSTEM_MEMORY:-${CPP_MAX_TOTAL_SYSTEM_MEMORY}}" \ diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.build.wheel.tmpl.sh b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.build.wheel.tmpl.sh index 56fbc1d5..164bfae0 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.build.wheel.tmpl.sh +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.build.wheel.tmpl.sh @@ -21,6 +21,9 @@ build_${PY_LIB}_python_wheel() { local -; set -euo pipefail; + # Stop the sccache server in case we need to reload credentials before starting the next build + sccache --stop-server >/dev/null 2>&1 || true; + eval "$( \ PARALLEL_LEVEL=${PARALLEL_LEVEL:-$(nproc --all)} \ rapids-get-num-archs-jobs-and-load "$@" \ @@ -96,9 +99,9 @@ build_${PY_LIB}_python_wheel() { PARALLEL_LEVEL="${n_jobs}" \ CMAKE_ARGS="${cmake_args[*]@Q}" \ SKBUILD_BUILD_OPTIONS="${ninja_args[*]}" \ + SKBUILD_BUILD_VERBOSE="${v:+True}" \ SKBUILD_LOGGING_LEVEL="${v:+INFO}" \ SKBUILD_INSTALL_STRIP="${strip:+True}" \ - SKBUILD_CMAKE_VERBOSE="${v:+True}" \ SKBUILD_CMAKE_BUILD_TYPE="${build_type}" \ CMAKE_BUILD_PARALLEL_LEVEL="${n_jobs}" \ NVCC_APPEND_FLAGS="${nvcc_append_flags}" \ diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.install.tmpl.sh b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.install.tmpl.sh index 89e9d3a9..3af8073d 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.install.tmpl.sh +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/bin/tmpl/python.install.tmpl.sh @@ -21,6 +21,9 @@ install_${PY_LIB}_python() { local -; set -euo pipefail; + # Stop the sccache server in case we need to reload credentials before starting the next build + sccache --stop-server >/dev/null 2>&1 || true; + eval "$( \ PARALLEL_LEVEL=${PARALLEL_LEVEL:-$(nproc --all)} \ rapids-get-num-archs-jobs-and-load "$@" \ @@ -114,9 +117,9 @@ install_${PY_LIB}_python() { PARALLEL_LEVEL="${n_jobs}" \ CMAKE_ARGS="${cmake_args[*]@Q}" \ SKBUILD_BUILD_OPTIONS="${ninja_args[*]}" \ + SKBUILD_BUILD_VERBOSE="${v:+True}" \ SKBUILD_LOGGING_LEVEL="${v:+INFO}" \ SKBUILD_INSTALL_STRIP="${strip:+True}" \ - SKBUILD_CMAKE_VERBOSE="${v:+True}" \ SKBUILD_CMAKE_BUILD_TYPE="${build_type}" \ CMAKE_BUILD_PARALLEL_LEVEL="${n_jobs}" \ NVCC_APPEND_FLAGS="${nvcc_append_flags}" \ diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml index b74e6f76..2f6dad5f 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml @@ -1,6 +1,6 @@ x-git-defaults: &git_defaults host: github - tag: branch-24.08 + tag: branch-24.10 upstream: rapidsai x-rapids-build-backend-args: &rapids_build_backend_args | @@ -28,7 +28,7 @@ repos: - name: ucxx path: ucxx - git: {<<: *git_defaults, repo: ucxx, tag: branch-0.39} + git: {<<: *git_defaults, repo: ucxx, tag: branch-0.40} cpp: - name: ucxx sub_dir: cpp @@ -39,7 +39,7 @@ repos: -DUCXX_ENABLE_RMM=ON python: - name: ucxx - sub_dir: python + sub_dir: python/ucxx depends: [ucxx] args: {cmake: -DFIND_UCXX_CPP=ON, install: *rapids_build_backend_args} - name: distributed-ucxx @@ -78,6 +78,13 @@ repos: sub_dir: cpp/libcudf_kafka depends: [cudf] python: + - name: libcudf + sub_dir: python/libcudf + depends: [cudf] + - name: pylibcudf + sub_dir: python/pylibcudf + depends: [cudf] + args: {cmake: -DFIND_CUDF_CPP=ON, install: *rapids_build_backend_args} - name: cudf sub_dir: python/cudf depends: [cudf] @@ -249,6 +256,9 @@ repos: sub_dir: cpp depends: [cudf] python: + - name: libcuspatial + sub_dir: python/libcuspatial + depends: [cuspatial] - name: cuproj sub_dir: python/cuproj depends: [rmm] @@ -263,4 +273,4 @@ repos: - name: cuspatial sub_dir: python/cuspatial depends: [cuspatial] - args: {cmake: -DFIND_CUSPATIAL_CPP=ON, install: *rapids_build_backend_args} + args: {install: *rapids_build_backend_args} diff --git a/features/src/rust/devcontainer-feature.json b/features/src/rust/devcontainer-feature.json index f21b6b04..8d56e018 100644 --- a/features/src/rust/devcontainer-feature.json +++ b/features/src/rust/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "rust", - "version": "24.8.1", + "version": "24.10.0", "name": "Rust", "documentationURL": "https://github.com/rapidsai/devcontainers/features/tree/main/src/rust", "description": "Installs Rust, common Rust utilities, and their required dependencies", diff --git a/features/src/sccache/.bashrc b/features/src/sccache/.bashrc index 799d21b2..fa591c23 100644 --- a/features/src/sccache/.bashrc +++ b/features/src/sccache/.bashrc @@ -1,5 +1,4 @@ export RUSTC_WRAPPER=${RUSTC_WRAPPER:-/usr/bin/sccache}; -export SCCACHE_IDLE_TIMEOUT=${SCCACHE_IDLE_TIMEOUT:-32768}; export CMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER:-/usr/bin/sccache}; export CMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER:-/usr/bin/sccache}; export CMAKE_CUDA_COMPILER_LAUNCHER=${CMAKE_CUDA_COMPILER_LAUNCHER:-/usr/bin/sccache}; diff --git a/features/src/sccache/devcontainer-feature.json b/features/src/sccache/devcontainer-feature.json index 708d58cb..17f4a3ce 100644 --- a/features/src/sccache/devcontainer-feature.json +++ b/features/src/sccache/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "sccache", "id": "sccache", - "version": "24.8.1", + "version": "24.10.1", "description": "A feature to install sccache", "options": { "version": { diff --git a/features/src/ucx/devcontainer-feature.json b/features/src/ucx/devcontainer-feature.json index 17d14299..02a6b407 100644 --- a/features/src/ucx/devcontainer-feature.json +++ b/features/src/ucx/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "UCX", "id": "ucx", - "version": "24.8.3", + "version": "24.10.0", "description": "A feature to install UCX", "options": { "version": { diff --git a/features/src/utils/.bashrc b/features/src/utils/.bashrc index 5096c8ba..c79c76fd 100644 --- a/features/src/utils/.bashrc +++ b/features/src/utils/.bashrc @@ -3,7 +3,7 @@ export PYTHONSAFEPATH="${PYTHONSAFEPATH:-1}"; # Append history lines as soon as they're entered -export PROMPT_COMMAND="${PROMPT_COMMAND:-}"; +export PROMPT_COMMAND="${PROMPT_COMMAND:-history -a}"; if test -n "${PROMPT_COMMAND##*"history -a"*}"; then export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"; diff --git a/features/src/utils/devcontainer-feature.json b/features/src/utils/devcontainer-feature.json index c72771a1..7fb87a98 100644 --- a/features/src/utils/devcontainer-feature.json +++ b/features/src/utils/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "devcontainer-utils", "id": "utils", - "version": "24.8.6", + "version": "24.10.3", "description": "A feature to install RAPIDS devcontainer utility scripts", "containerEnv": { "BASH_ENV": "/etc/bash.bash_env" diff --git a/features/src/utils/install.sh b/features/src/utils/install.sh index 9b1e869d..56894de9 100644 --- a/features/src/utils/install.sh +++ b/features/src/utils/install.sh @@ -31,12 +31,18 @@ check_packages "${PKGS[@]}"; source /etc/lsb-release; -if [[ ! "23.04" > "${DISTRIB_RELEASE}" ]]; then - BREAK_PACKAGES="--break-system-packages"; +# Upgrade system pip +declare -a _PIP_INSTALL_ARGS=() +declare -a _PIP_UPGRADE_ARGS=(--upgrade) + +if [[ "${DISTRIB_RELEASE}" > "22.04" ]]; then + _PIP_INSTALL_ARGS+=(--break-system-packages); + if [[ "${DISTRIB_RELEASE}" > "23.04" ]]; then + _PIP_UPGRADE_ARGS+=(--ignore-installed); + fi fi -# upgrade pip -/usr/bin/python3 -m pip install $BREAK_PACKAGES -U pip; +/usr/bin/python3 -m pip install "${_PIP_INSTALL_ARGS[@]}" "${_PIP_UPGRADE_ARGS[@]}" pip; # Install yq if not installed if ! type yq >/dev/null 2>&1; then diff --git a/features/src/utils/opt/devcontainer/bin/vault/s3/creds/generate.sh b/features/src/utils/opt/devcontainer/bin/vault/s3/creds/generate.sh index ec21641b..5f6f8185 100755 --- a/features/src/utils/opt/devcontainer/bin/vault/s3/creds/generate.sh +++ b/features/src/utils/opt/devcontainer/bin/vault/s3/creds/generate.sh @@ -75,7 +75,7 @@ Successfully authenticated with vault! ____EOF local -r generated_at="$(date '+%s')"; - local ttl="${VAULT_S3_TTL:-"28800"}"; + local ttl="${VAULT_S3_TTL:-"43200"}"; local uri="${VAULT_S3_URI:-"v1/aws/creds/devs"}"; if grep -qE '^[0-9]$' <<< "${ttl}"; then diff --git a/features/src/utils/opt/devcontainer/bin/vault/s3/creds/schedule.sh b/features/src/utils/opt/devcontainer/bin/vault/s3/creds/schedule.sh index 2d2b4735..3e1f98b2 100755 --- a/features/src/utils/opt/devcontainer/bin/vault/s3/creds/schedule.sh +++ b/features/src/utils/opt/devcontainer/bin/vault/s3/creds/schedule.sh @@ -8,22 +8,23 @@ schedule_s3_creds_refresh() { . devcontainer-utils-debug-output 'devcontainer_utils_debug' 'vault-s3 vault-s3-creds-schedule'; local -r now="$(date '+%s')"; - local ttl="${VAULT_S3_TTL:-"28800"}"; + local ttl="${VAULT_S3_TTL:-"43200"}"; ttl="${ttl%s}"; local -r stamp="$(cat ~/.aws/stamp 2>/dev/null || echo "${now}")"; - local then="$((ttl - (now - stamp)))"; - then="$((then < ttl ? then : ttl))"; - then="$((((then + 59) / 60) * 60))"; + local ttime="$((ttl - (now - stamp)))"; + ttime="$((ttime < ttl ? ttime : ttl))"; + ttime="$((( (ttime + 59) / 60) * 60))"; - # Regenerate if within 5 minutes of keys expiring - if test "${then}" -le 300; then + # Regenerate creds if within `min(ttl / 5, 2hrs)` of keys expiring + local refresh_window="$(((ttl / 5) > 7200 ? 7200 : ttl / 5))"; + + if test "${ttime}" -le "${refresh_window}"; then if devcontainer-utils-vault-s3-creds-generate; then devcontainer-utils-vault-s3-creds-schedule; fi else - # Regenerate 5 minutes before keys expire - then="$((now + then - 300))"; + ttime="$((now + ttime - refresh_window))"; crontab -u "$(whoami)" -r 2>/dev/null || true; @@ -34,7 +35,7 @@ schedule_s3_creds_refresh() { cat <<________EOF | tee -a /var/log/devcontainer-utils/vault-s3-creds-refresh.log $(date --date="@${now}") -Scheduling cron to regerate S3 creds $(date -u --date="@$((then - now))" '+%T') from now. +Scheduling cron to regerate S3 creds $(date -u --date="@$((ttime - now))" '+%T') from now. ________EOF cat <<________EOF | crontab -u "$(whoami)" - @@ -47,7 +48,7 @@ SCCACHE_BUCKET="${SCCACHE_BUCKET:-}" SCCACHE_REGION="${SCCACHE_REGION:-}" VAULT_GITHUB_ORGS="${VAULT_GITHUB_ORGS:-}" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-}" -$(date --date="@${then}" '+%M %H %d %m %w') \ +$(date --date="@${ttime}" '+%M %H %d %m %w') \ devcontainer-utils-vault-s3-creds-schedule ________EOF diff --git a/features/src/utils/opt/devcontainer/bin/vault/s3/creds/test.sh b/features/src/utils/opt/devcontainer/bin/vault/s3/creds/test.sh index 78ed0682..27e01ba7 100755 --- a/features/src/utils/opt/devcontainer/bin/vault/s3/creds/test.sh +++ b/features/src/utils/opt/devcontainer/bin/vault/s3/creds/test.sh @@ -14,7 +14,7 @@ test_aws_creds() { if test -f ~/.aws/stamp; then local -r now="$(date '+%s')"; local -r stamp="$(cat ~/.aws/stamp)"; - local ttl="${VAULT_S3_TTL:-"28800"}"; + local ttl="${VAULT_S3_TTL:-"43200"}"; if [ $((now - stamp)) -ge "${ttl%s}" ]; then exit 1; fi diff --git a/image/.devcontainer/Dockerfile b/image/.devcontainer/Dockerfile index 49146752..a5fca818 100644 --- a/image/.devcontainer/Dockerfile +++ b/image/.devcontainer/Dockerfile @@ -3,3 +3,5 @@ FROM ${BASE} ARG RAPIDS_VERSION ENV RAPIDS_VERSION=$RAPIDS_VERSION + +RUN if grep ubuntu:x:1000:1000 /etc/passwd >/dev/null; then userdel -f -r ubuntu; fi diff --git a/matrix.yml b/matrix.yml index 08a07816..87899546 100644 --- a/matrix.yml +++ b/matrix.yml @@ -1,7 +1,7 @@ x-cuda-prev-min: &cuda_prev_min { name: "cuda", version: "11.1" } x-cuda-prev-max: &cuda_prev_max { name: "cuda", version: "11.8" } x-cuda-curr-min: &cuda_curr_min { name: "cuda", version: "12.0" } -x-cuda-curr-max: &cuda_curr_max { name: "cuda", version: "12.5" } +x-cuda-curr-max: &cuda_curr_max { name: "cuda", version: "12.6" } x-cuda-curr-max: &cuda_curr_max_rapids { name: "cuda", version: "12.5" } x-gcc-6: &gcc_6 { name: "gcc", version: "6" } @@ -12,10 +12,10 @@ x-gcc-10: &gcc_10 { name: "gcc", version: "10" } x-gcc-11: &gcc_11 { name: "gcc", version: "11" } x-gcc-12: &gcc_12 { name: "gcc", version: "12" } x-gcc-13: &gcc_13 { name: "gcc", version: "13" } -x-gcc-env: &gcc_env {CC: "gcc", CXX: "g++", CUDAHOSTCXX: "g++"} +x-gcc-env: &gcc_env { CC: "gcc", CXX: "g++", CUDAHOSTCXX: "g++" } x-oneapi: &oneapi_2022 { name: "oneapi", version: "2023.2.0" } -x-oneapi-env: &onapi_env {CC: "icc", CXX: "icpc", CUDAHOSTCXX: "icpc" } +x-oneapi-env: &onapi_env { CC: "icc", CXX: "icpc", CUDAHOSTCXX: "icpc" } x-llvm-9: &llvm_9 { name: "llvm", version: "9" } x-llvm-10: &llvm_10 { name: "llvm", version: "10" } @@ -28,22 +28,23 @@ x-llvm-16: &llvm_16 { name: "llvm", version: "16" } x-llvm-17: &llvm_17 { name: "llvm", version: "17" } x-llvm-prev: &llvm_18 { name: "llvm", version: "18" } x-llvm-curr: &llvm_19 { name: "llvm", version: "19" } -x-llvm-env: &llvm_env {CC: "clang", CXX: "clang++", CUDAHOSTCXX: "clang++"} +x-llvm-env: &llvm_env { CC: "clang", CXX: "clang++", CUDAHOSTCXX: "clang++" } -x-nvhpc-prev: &nvhpc_prev { name: "nvhpc", version: "24.3" } -x-nvhpc-curr: &nvhpc_curr { name: "nvhpc", version: "24.5" } +x-nvhpc-prev: &nvhpc_prev { name: "nvhpc", version: "24.5" } +x-nvhpc-curr: &nvhpc_curr { name: "nvhpc", version: "24.7" } -x-nvhpc-env: &nvhpc_env {CC: "nvc", CXX: "nvc++"} +x-nvhpc-env: &nvhpc_env { CC: "nvc", CXX: "nvc++", CUDAHOSTCXX: "nvc++" } x-mambaforge: &conda { name: "mambaforge" } x-python: &python { name: "ghcr.io/devcontainers/features/python:1.6.2", version: "os-provided", installTools: "false", hide: true } -x-ucx-rapids: &ucx_rapids {name: "ucx", version: "1.17.0"} -x-openmpi: &openmpi {name: "openmpi"} +x-ucx-rapids: &ucx_rapids { name: "ucx", version: "1.17.0" } +x-openmpi: &openmpi { name: "openmpi" } x-cccl-dev: &cccl_dev { name: "cccl-dev", hide: true } -x-clangd-dev: &clangd_dev {name: "llvm", version: "19", packages: "clangd", hide: true} -x-clang-format-cccl: &clang_format_cccl {name: "llvm", version: "18", packages: "clang-format", hide: true} -x-clang-format-rapids: &clang_format_rapids {name: "llvm", version: "16", packages: "clang-format", hide: true} +x-clangd-dev: &clangd_dev { name: "llvm", version: "dev", packages: "clangd", hide: true } +x-clangd-dev-bionic: &clangd_dev_bionic { name: "llvm", version: "19", packages: "clangd", hide: true } +x-clang-format-cccl: &clang_format_cccl { name: "llvm", version: "18", packages: "clang-format llvm-tools", hide: true } +x-clang-format-rapids: &clang_format_rapids { name: "llvm", version: "16", packages: "clang-format", hide: true } # CCCL only needs a subset of the full CTK: x-cccl-cuda-opts: &cccl_cuda_opts { @@ -60,104 +61,103 @@ include: - os: "ubuntu:18.04" images: - - {features: [*python, *gcc_6, {<<: *cuda_prev_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_7, {<<: *cuda_prev_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_8, {<<: *cuda_prev_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_9, {<<: *cuda_prev_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *llvm_9, {<<: *cuda_prev_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *oneapi_2022, {<<: *cuda_prev_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *onapi_env} + - { features: [*python, *gcc_6, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_7, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_8, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_9, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *llvm_9, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *llvm_env } + - { features: [*python, *oneapi_2022, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *onapi_env } - os: "ubuntu:20.04" images: - - {features: [*python, *gcc_7, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_7, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_8, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_8, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_9, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_9, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_10, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_10, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *llvm_9, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_9, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_10, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_10, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_11, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_11, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_12, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_12, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_13, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_13, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_14, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_14, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *oneapi_2022, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *onapi_env} + - { features: [*python, *gcc_7, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_7, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_8, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_8, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_9, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_9, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_10, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_10, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *llvm_9, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_9, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_10, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_10, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_11, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_11, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_12, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_12, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_13, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_13, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_14, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_14, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *oneapi_2022, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *onapi_env } - os: "ubuntu:22.04" images: - - {features: [*python, *nvhpc_prev, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *nvhpc_env} - - {features: [*python, *nvhpc_curr, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *nvhpc_env} - - {features: [*python, *gcc_11, {<<: *cuda_prev_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_11, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_11, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_12, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_12, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_13, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *gcc_13, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} - - {features: [*python, *llvm_15, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_15, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_16, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_16, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_17, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_17, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_18, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_18, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_19, {<<: *cuda_curr_min, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *llvm_19, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env} - - {features: [*python, *oneapi_2022, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *onapi_env} - -# Hack for getting gcc-13.2 -- os: "ubuntu:23.04" + - { features: [*python, *nvhpc_prev, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *nvhpc_env } + - { features: [*python, *nvhpc_curr, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *nvhpc_env } + - { features: [*python, *gcc_11, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_11, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_11, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_12, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_12, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_13, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *gcc_13, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *llvm_15, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_15, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_16, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_16, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_17, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_17, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_18, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_18, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_19, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *llvm_19, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *oneapi_2022, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *onapi_env } + +- os: "ubuntu:24.04" images: - - {features: [*python, *gcc_13, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env} + - { features: [*python, *gcc_13, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - os: "windows" images: # lowest CUDA version - - {features: [{<<: *cuda_prev_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.14" }]} # MSVC 2017 - - {features: [{<<: *cuda_prev_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.15" }]} # MSVC 2017 - - {features: [{<<: *cuda_prev_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.16" }]} # MSVC 2017 - - {features: [{<<: *cuda_prev_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.27" }]} # MSVC 2019 - - {features: [{<<: *cuda_prev_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.28" }]} # MSVC 2019 - - {features: [{<<: *cuda_prev_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.29" }]} # MSVC 2019 + - { features: [{ <<: *cuda_prev_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.14" }] } # MSVC 2017 + - { features: [{ <<: *cuda_prev_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.15" }] } # MSVC 2017 + - { features: [{ <<: *cuda_prev_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.16" }] } # MSVC 2017 + - { features: [{ <<: *cuda_prev_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.27" }] } # MSVC 2019 + - { features: [{ <<: *cuda_prev_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.28" }] } # MSVC 2019 + - { features: [{ <<: *cuda_prev_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.29" }] } # MSVC 2019 # middlest CUDA version - - {features: [{<<: *cuda_curr_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.29" }]} # MSVC 2019 - - {features: [{<<: *cuda_curr_min, <<: *cccl_cuda_opts}, { name: "cl", version: "14.36" }]} # MSVC 2022 + - { features: [{ <<: *cuda_curr_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.29" }] } # MSVC 2019 + - { features: [{ <<: *cuda_curr_min, <<: *cccl_cuda_opts }, { name: "cl", version: "14.36" }] } # MSVC 2022 # highest CUDA version - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.14" }]} # MSVC 2017 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.15" }]} # MSVC 2017 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.16" }]} # MSVC 2017 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.27" }]} # MSVC 2019 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.28" }]} # MSVC 2019 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.29" }]} # MSVC 2019 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.37" }]} # MSVC 2022 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.38" }]} # MSVC 2022 - - {features: [{<<: *cuda_curr_max, <<: *cccl_cuda_opts}, { name: "cl", version: "14.39" }]} # MSVC 2022 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.14" }] } # MSVC 2017 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.15" }] } # MSVC 2017 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.16" }] } # MSVC 2017 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.27" }] } # MSVC 2019 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.28" }] } # MSVC 2019 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.29" }] } # MSVC 2019 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.37" }] } # MSVC 2022 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.38" }] } # MSVC 2022 + - { features: [{ <<: *cuda_curr_max, <<: *cccl_cuda_opts }, { name: "cl", version: "14.39" }] } # MSVC 2022 # RAPIDS devcontainers - os: "ubuntu:22.04" images: # cuda - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_prev_max], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_min], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max_rapids], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_prev_max, *ucx_rapids, *openmpi], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_min, *ucx_rapids, *openmpi], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max, *ucx_rapids, *openmpi], env: *gcc_env} - - {features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max_rapids, *ucx_rapids, *openmpi], env: *gcc_env} + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_prev_max], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_min], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max_rapids], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_prev_max, *ucx_rapids, *openmpi], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_min, *ucx_rapids, *openmpi], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max, *ucx_rapids, *openmpi], env: *gcc_env } + - { features: [*python, *clang_format_rapids, *clangd_dev, *cuda_curr_max_rapids, *ucx_rapids, *openmpi], env: *gcc_env } # mambaforge - - features: [*conda] + - { features: [*conda], env: { "PYTHON_VERSION": "3.12" } } ### # Legacy CUDA 11.x + mambaforge image. Needed so the cudatoolkit 11.x @@ -166,4 +166,4 @@ include: ### # cuda-mambaforge - - features: [*cuda_prev_max, *conda] + - { features: [*cuda_prev_max, *conda], env: { "PYTHON_VERSION": "3.12" } }