Add CUDA Dockerfile with updated fmt library#3272
Add CUDA Dockerfile with updated fmt library#3272yassineAlouini wants to merge 4 commits intoboutproject:masterfrom
Conversation
Fixes boutproject#3233 by providing an updated CUDA-enabled Docker container with: - Ubuntu 22.04 (updated from 20.04) - CUDA 12.6.1 (updated from 12.2.2) - fmt 11.0.2 (updated from 10.0.0, fixes missing fmt/base.h) - RAJA 2024.07.0 with CUDA support - Umpire 2024.07.0 for GPU memory management - Spack v0.23.0 for dependency management The Dockerfile includes proper CUDA configuration, comprehensive documentation, and a build script for easy container creation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace deprecated MAINTAINER with LABEL maintainer - Fix default BOUT_COMMIT from main to master - Make CUDA_ARCH a build arg used throughout Dockerfile and build.sh - Add CUDA image build job to docker.yml workflow - Update tests.yml to use repo-owned GHCR image - Update README with build arg usage examples Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Thanks @yassineAlouini! We don't want to actually clone or build BOUT++ in the docker image though, we do that as part of the CI tests. I think the version of spack likely also needs updating. |
|
Should we add it to https://github.com/dschwoerer/bout-container-base/ instead? We should probably move that repo to the boutproject though, if we keep using it for generating container base images. Can you do that, @ZedThree ? |
You should have permissions to change ownership to boutproject |
|
Indeed. I have transferred the repository 👍 |
|
I moved it over, but it seems to fail, while installing some spack related things: Any idea @yassineAlouini ? |
|
@dschwoerer I am still working on this PR, I will move it out of the DRAFT state once it works (i.e. the docker image builds with CUDA). 🫡 |
- Add libssl-dev to system packages (libevent needs openssl headers) - Constrain fftw and netcdf-cxx4 to use system mpich instead of building openmpi from source - Add openssl to spack external find - Add --show-log-on-error for better debugging Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@yassineAlouini Do you mind working directly on a PR here: This is the place where the container should be build. (Do not mind the failing fedora-ci, that is blocked by #3264 ) |
The CUDA Dockerfile now lives in boutproject/bout-container-base (PR boutproject#39). This commit removes the local copy and updates CI to pull the pre-built base image from ghcr.io/boutproject/bout-container-base:boutdev-cuda. - Remove .docker/cuda/ (Dockerfile, build.sh, README.md, .dockerignore) - Remove build-cuda job from docker.yml (built by container-base CI now) - Update CUDA CI job in tests.yml to use the new container image - Use bout-env.bash helper from the base image Fixes boutproject#3233 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
Fixes #3233 by providing an updated CUDA-enabled Docker container with modern dependencies, wired into CI.
Changes
Updated dependencies
fmt/base.hheader)New files
.docker/cuda/Dockerfile— Multi-stage build with CUDA support.docker/cuda/README.md— Documentation with usage examples.docker/cuda/build.sh— Build script with--cuda-archoption.docker/cuda/.dockerignore— Build optimizationCI integration
build-cudajob to.github/workflows/docker.ymlthat builds thesetup-spackstage and publishes toghcr.io/boutproject/bout-dev/boutdev-cuda:latest.github/workflows/tests.ymlto use the repo-owned image instead ofghcr.io/ggeorgakoudis/boutdev-cuda:latestworkflow_dispatchtrigger for manual rebuildsBuild fixes
CUDA_ARCHis a configurable build arg (default: 80 for Ampere), used throughout Spack specs and CMake configlibssl-devto system packages (required by libevent/OpenSSL)fftwandnetcdf-cxx4to use systemmpich(^mpich) instead of building OpenMPI from sourceopenssltospack external findto use system OpenSSLMAINTAINERwithLABEL maintainer=BOUT_COMMITfrommaintomasterTesting
setup-spackstage) built and verified locally🤖 Generated with Claude Code