incremental CI image updates#349
Open
rrsettgast wants to merge 28 commits intomasterfrom
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the TPL Docker/CI build flow to use newer “base toolchain” images and a new Ubuntu-focused Spack environment, enabling more incremental/targeted CI image refreshes while expanding supported toolchains/architectures.
Changes:
- Refactors Docker TPL builds to layer on top of
geosx/<os>:<tag>-<sha>base images and updates the CI workflow matrix accordingly. - Introduces a new
docker/ubuntu-spack.yamlenvironment and updates multiple Dockerfiles/scripts to consume it. - Improves CUDA architecture handling in generated host-configs to support multiple
cuda_archvalues.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/spack_packages/packages/geosx/package.py | Updates CUDA flag/architecture emission to support multiple CUDA SM targets. |
| scripts/setupLC-TPL-uberenv.bash | Adds new hypredrive build rows for select LC systems and updates some specs. |
| scripts/docker-build.sh | Switches docker build inputs to DOCKER_BASE_IMAGE and forwards optional compiler version build args. |
| docker/ubuntu20-clang-cuda-spack.yaml | Marks llvm/gcc as non-buildable externals in the Ubuntu20 clang/cuda Spack env. |
| docker/ubuntu-spack.yaml | Adds a new Ubuntu-oriented Spack environment with modern toolchains and externals. |
| docker/tpl-ubuntu.Dockerfile | Adds a new generic Ubuntu TPL Dockerfile that layers on DOCKER_BASE_IMAGE images. |
| docker/tpl-ubuntu-gcc.Dockerfile | Switches the Spack env file reference to docker/ubuntu-spack.yaml. |
| docker/tpl-ubuntu-clang.Dockerfile | Switches the Spack env file reference to docker/ubuntu-spack.yaml. |
| docker/tpl-rockylinux.Dockerfile | Adds a new generic Rocky Linux TPL Dockerfile that layers on DOCKER_BASE_IMAGE images. |
| docker/tpl-rockylinux-gcc-cuda-12.Dockerfile | Makes clingo installation more robust by ensuring pip is available first. |
| docker/tpl-rockylinux-clang-cuda-12.Dockerfile | Makes clingo installation more robust by ensuring pip is available first. |
| docker/tpl-centos-gcc-cuda.Dockerfile | Updates the Spack env file reference used by the legacy CentOS CUDA Dockerfile. |
| docker/rocky-spack.yaml | Expands toolchain definitions/externals and pins compilers as non-buildable for Rocky images. |
| docker/spack.yaml | Removes the previous shared Spack environment file. |
| .github/workflows/docker_build_tpls.yml | Reworks the CI matrix to use base images + new Dockerfiles, and updates GitHub Actions versions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+101
to
+104
| "${UBERENV_HELPER}" "$INSTALL_DIR" matrix gcc-12-cuda-12.6 "+cuda ~uncrustify cuda_arch=90 %%gcc-12 ^cuda@12.6.0+allow-unsupported-compilers ${COMMON}" "${ALLOC_CMD}" "$@" & | ||
| "${UBERENV_HELPER}" "$INSTALL_DIR" matrix gcc-13-cuda-12.9 "+cuda ~uncrustify cuda_arch=90 %%gcc-13 ^cuda@12.9.1+allow-unsupported-compilers ${COMMON}" "${ALLOC_CMD}" "$@" & | ||
| "${UBERENV_HELPER}" "$INSTALL_DIR" matrix gcc-13-cuda-12.9-hypredrive "+cuda ~uncrustify +hyperdrive cuda_arch=90 %%gcc-13 ^cuda@12.9.1+allow-unsupported-compilers ${COMMON}" "${ALLOC_CMD}" "$@" & | ||
| "${UBERENV_HELPER}" "$INSTALL_DIR" matrix llvm-14-cuda-12.6 "+cuda ~uncrustify cuda_arch=90 %%clang-14 ^cuda@12.6.0+allow-unsupported-compilers ${COMMON}" "${ALLOC_CMD}" "$@" & |
| ALLOC_CMD="salloc -N 1 --exclusive -p pdebug -t 60 -A vortex" | ||
| "${UBERENV_HELPER}" "$INSTALL_DIR" tuolumne cce-20-rocm-6.4.3 "+rocm~pygeosx~trilinos~petsc~docs amdgpu_target=gfx942 %%cce-20 ${COMMON}" "${ALLOC_CMD}" "$@" & | ||
| "${UBERENV_HELPER}" "$INSTALL_DIR" tuolumne llvm-amdgpu-6.4.3 "+rocm~pygeosx~trilinos~petsc~docs amdgpu_target=gfx942 %%llvm-amdgpu_6_4_3 ${COMMON}" "${ALLOC_CMD}" "$@" & | ||
| "${UBERENV_HELPER}" "$INSTALL_DIR" tuolumne llvm-amdgpu-6.4.3-hypredrive "+rocm~pygeosx~trilinos~petsc~docs+hyperdrive amdgpu_target=gfx942 %%llvm-amdgpu_6_4_3 ${COMMON}" "${ALLOC_CMD}" "$@" & |
| ./scripts/uberenv/uberenv.py \ | ||
| --spec "%gcc@8+cuda~uncrustify~openmp~pygeosx cuda_arch=86 ^cuda@11.8.0+allow-unsupported-compilers ^caliper~gotcha~sampler~libunwind~libdw~papi" \ | ||
| --spack-env-file=${SRC_DIR}/docker/spack.yaml \ | ||
| --spack-env-file=${SRC_DIR}/docker/ubuntu-spack.yaml \ |
Comment on lines
+29
to
+36
| # on `[ -z "${ARG}" ]` checks. | ||
| EXTRA_BUILD_ARGS=() | ||
| if [ -n "${GCC_VERSION}" ]; then EXTRA_BUILD_ARGS+=(--build-arg "GCC_VERSION=${GCC_VERSION}"); fi | ||
| if [ -n "${CLANG_VERSION}" ]; then EXTRA_BUILD_ARGS+=(--build-arg "CLANG_VERSION=${CLANG_VERSION}"); fi | ||
|
|
||
| docker build --progress=plain \ | ||
| --build-arg HOST_CONFIG=${HOST_CONFIG} \ | ||
| --build-arg DOCKER_BASE_IMAGE=${DOCKER_BASE_IMAGE} \ |
Comment on lines
115
to
119
| if [ -z "${GEOSX_SPEC}" ] || [ "${GEOSX_SPEC}" = "undefined" ]; then GEOSX_SPEC="~pygeosx +docs %gcc-${GCC_MAJOR_VERSION}"; fi && \ | ||
| ./scripts/uberenv/uberenv.py \ | ||
| --spec "${GEOSX_SPEC}" \ | ||
| --spack-env-file=${SRC_DIR}/docker/spack.yaml \ | ||
| --spack-env-file=${SRC_DIR}/docker/ubuntu-spack.yaml \ | ||
| --project-json=${SRC_DIR}/.uberenv_config.json \ |
| ./scripts/uberenv/uberenv.py \ | ||
| --spec "${GEOSX_SPEC}" \ | ||
| --spack-env-file=${SRC_DIR}/docker/spack.yaml \ | ||
| --spack-env-file=${SRC_DIR}/docker/ubuntu-spack.yaml \ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.