From 77c2e329a74565b0b2db1b7dbd5ae7b735e67b16 Mon Sep 17 00:00:00 2001 From: Dmitri Smirnov Date: Thu, 30 Jul 2026 13:31:26 -0400 Subject: [PATCH 1/4] docs: improve development and testing workflows Reorganize the README and getting-started guide around quick native and Dev Container workflows. Document setup, branch selection, dependency overrides, container rebuilds, targeted tests, published images, and NERSC usage. Give Dev Container Compose projects per-user names to prevent shared Docker daemon collisions, and refresh the published image matrix and examples. --- .devcontainer/compose.devcontainer.yaml | 2 + README.md | 102 +++++++---- docs/getting-started.md | 230 ++++++++++++++++-------- 3 files changed, 221 insertions(+), 113 deletions(-) diff --git a/.devcontainer/compose.devcontainer.yaml b/.devcontainer/compose.devcontainer.yaml index e107e18e5..16d8d57b5 100644 --- a/.devcontainer/compose.devcontainer.yaml +++ b/.devcontainer/compose.devcontainer.yaml @@ -1,3 +1,5 @@ +name: simphony-${USER} + services: simphony: build: diff --git a/README.md b/README.md index b4640ae87..79cf5e561 100644 --- a/README.md +++ b/README.md @@ -15,60 +15,69 @@ The project builds on Simon Blyth's original [Opticks](https://simoncblyth.bitbucket.io/opticks/) work and adapts that approach for current OptiX- and Geant4-based simulation workflows. - ## Quick start +### Build from source + +If CUDA 12.1+, NVIDIA OptiX 7+, Geant4 11.3+, CMake 3.22+, and Python 3.10+ +are already installed, you can build and test Simphony directly: + ```shell git clone https://github.com/BNLNPPS/simphony.git -cmake -S simphony -B build +cd simphony +cmake -S . -B build cmake --build build +ctest --test-dir build ``` -To build from source, install CUDA 12.1+, NVIDIA OptiX 7+, and Geant4 11.3+. -A CUDA-capable NVIDIA GPU is required only to run Simphony and its GPU-backed -examples. +You can edit and build without a GPU. Running Simphony and its GPU-backed tests +requires a CUDA-capable NVIDIA GPU. -Simphony can also be installed via Spack as a dependency: +### Use the Dev Container + +For a ready-made environment, first install [Docker +Engine](https://docs.docker.com/engine/install/). Then install the [Dev Container +CLI](https://github.com/devcontainers/cli) and start the environment: ```shell -spack repo add https://github.com/BNLNPPS/spack-packages -spack install simphony +npm install -g @devcontainers/cli +git clone https://github.com/BNLNPPS/simphony.git +cd simphony +devcontainer up +devcontainer exec bash ``` -To try the latest release image and verify that GPU-enabled code runs on your -machine, you can use either Docker or Apptainer/Singularity: +The source tree is mounted into the container. Once inside, use the same CMake +commands above and rerun only the relevant build and tests as you work. + +The root `.env` selects the OS and toolchain versions. See [Choose dependency +versions](docs/getting-started.md#choose-dependency-versions) before changing +them. + +If you plan to run GPU-backed code, install the [NVIDIA Container +Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) +on the host. + +### Try a published image + +To take the latest release for a quick test drive, use Docker or Apptainer: ```shell docker run --rm --gpus all ghcr.io/bnlnpps/simphony simg4ox -g tests/geom/raindrop.gdml -m tests/run.mac -apptainer exec --nv docker://ghcr.io/bnlnpps/simphony simg4ox -g /workspaces/simphony/tests/geom/opticks_raindrop.gdml -m /workspaces/simphony/tests/run.mac +apptainer exec --nv docker://ghcr.io/bnlnpps/simphony simg4ox -g /workspaces/simphony/tests/geom/raindrop.gdml -m /workspaces/simphony/tests/run.mac ``` -For local development, you can build the `develop` image yourself or use the -repository's [devcontainer configuration](.devcontainer/devcontainer.json). On -a reasonably provisioned machine, building the `develop` image can take under 10 -minutes. See [Getting started](docs/getting-started.md) for Docker, Singularity, -and development-environment details. - -## Supported Images - -The `build-push-base.yaml` workflow publishes reusable `base` images for development environments and Docker build -cache warmup. The `build-push.yaml` workflow publishes the versioned container tags below to GHCR on pushes to `main`, -while `release.yaml` publishes the `latest` alias on tagged releases. Tag entries link to the -[Simphony package page](https://github.com/BNLNPPS/simphony/pkgs/container/simphony). - -| Target | OS | CUDA | OptiX | Geant4 | Alias | Tag | -|---|---|---:|---:|---:|---|---| -| `base` | `ubuntu26.04` | `13.3.0` | `9.1.0` | `11.4.2` | | [cuda13.3.0-base-ubuntu26.04-optix9.1.0-geant411.4.2-cmake4.3.4](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `base` | `ubuntu24.04` | `13.0.3` | `9.0.0` | `11.4.2` | `base` | [cuda13.0.3-base-ubuntu24.04-optix9.0.0-geant411.4.2-cmake4.2.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `base` | `ubuntu24.04` | `12.5.1` | `9.0.0` | `11.4.1` | | [cuda12.5.1-base-ubuntu24.04-optix9.0.0-geant411.4.1-cmake3.28.3](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `base` | `ubuntu22.04` | `12.1.1` | `8.0.0` | `11.3.2` | | [cuda12.1.1-base-ubuntu22.04-optix8.0.0-geant411.3.2-cmake3.22.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `release` | `ubuntu26.04` | `13.3.0` | `9.1.0` | `11.4.2` | | [cuda13.3.0-release-ubuntu26.04-optix9.1.0-geant411.4.2-cmake4.3.4](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `release` | `ubuntu24.04` | `13.0.3` | `9.0.0` | `11.4.2` | `latest` | [cuda13.0.3-release-ubuntu24.04-optix9.0.0-geant411.4.2-cmake4.2.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `release` | `ubuntu22.04` | `12.1.1` | `8.0.0` | `11.3.2` | | [cuda12.1.1-release-ubuntu22.04-optix8.0.0-geant411.3.2-cmake3.22.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `develop` | `ubuntu24.04` | `13.0.3` | `9.0.0` | `11.4.2` | `develop` | [cuda13.0.3-develop-ubuntu24.04-optix9.0.0-geant411.4.2-cmake4.2.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `develop` | `ubuntu24.04` | `12.5.1` | `9.0.0` | `11.4.1` | | [cuda12.5.1-develop-ubuntu24.04-optix9.0.0-geant411.4.1-cmake3.28.3](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | -| `develop` | `ubuntu22.04` | `12.1.1` | `8.0.0` | `11.3.2` | | [cuda12.1.1-develop-ubuntu22.04-optix8.0.0-geant411.3.2-cmake3.22.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +### Install with Spack +Simphony is also available through the BNLNPPS Spack repository: + +```shell +spack repo add https://github.com/BNLNPPS/spack-packages +spack install simphony +``` + +See [Getting started](docs/getting-started.md) for targeted test commands, +container lifecycle tips, native builds, and NERSC usage. ## Documentation @@ -77,3 +86,24 @@ while `release.yaml` publishes the `latest` alias on tagged releases. Tag entrie - [Simulation inputs and outputs](docs/inputs-outputs.md) - [Performance and debugging](docs/performance-and-debugging.md) - [Examples](examples/README.md) + +## Published container images + +The project publishes reusable `base` images for development environments and +Docker build-cache warmup, along with versioned `release` and `develop` images. +Pushes to `main` update the versioned tags, while tagged releases update the +`latest` alias. Every tag below links to the [Simphony package +page](https://github.com/BNLNPPS/simphony/pkgs/container/simphony). + +| Target | OS | CUDA | OptiX | Geant4 | CMake | Alias | Tag | +|---|---|---:|---:|---:|---:|---|---| +| `base` | `ubuntu26.04` | `13.3.0` | `9.1.0` | `11.4.2` | `4.3.4` | | [cuda13.3.0-base-ubuntu26.04-optix9.1.0-geant411.4.2-cmake4.3.4](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `base` | `ubuntu24.04` | `13.0.3` | `9.0.0` | `11.4.2` | `4.2.1` | `base` | [cuda13.0.3-base-ubuntu24.04-optix9.0.0-geant411.4.2-cmake4.2.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `base` | `ubuntu24.04` | `12.5.1` | `9.0.0` | `11.4.1` | `3.28.3` | | [cuda12.5.1-base-ubuntu24.04-optix9.0.0-geant411.4.1-cmake3.28.3](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `base` | `ubuntu22.04` | `12.1.1` | `8.0.0` | `11.3.2` | `3.22.1` | | [cuda12.1.1-base-ubuntu22.04-optix8.0.0-geant411.3.2-cmake3.22.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `release` | `ubuntu26.04` | `13.3.0` | `9.1.0` | `11.4.2` | `4.3.4` | | [cuda13.3.0-release-ubuntu26.04-optix9.1.0-geant411.4.2-cmake4.3.4](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `release` | `ubuntu24.04` | `13.0.3` | `9.0.0` | `11.4.2` | `4.2.1` | `latest` | [cuda13.0.3-release-ubuntu24.04-optix9.0.0-geant411.4.2-cmake4.2.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `release` | `ubuntu22.04` | `12.1.1` | `8.0.0` | `11.3.2` | `3.22.1` | | [cuda12.1.1-release-ubuntu22.04-optix8.0.0-geant411.3.2-cmake3.22.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `develop` | `ubuntu24.04` | `13.0.3` | `9.0.0` | `11.4.2` | `4.2.1` | `develop` | [cuda13.0.3-develop-ubuntu24.04-optix9.0.0-geant411.4.2-cmake4.2.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `develop` | `ubuntu24.04` | `12.5.1` | `9.0.0` | `11.4.1` | `3.28.3` | | [cuda12.5.1-develop-ubuntu24.04-optix9.0.0-geant411.4.1-cmake3.28.3](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | +| `develop` | `ubuntu22.04` | `12.1.1` | `8.0.0` | `11.3.2` | `3.22.1` | | [cuda12.1.1-develop-ubuntu22.04-optix8.0.0-geant411.3.2-cmake3.22.1](https://github.com/BNLNPPS/simphony/pkgs/container/simphony) | diff --git a/docs/getting-started.md b/docs/getting-started.md index fddc5779a..10c8a71a6 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,127 +1,203 @@ # Getting started -This guide covers the system requirements, build steps, container workflows, -and a sample NERSC batch job for running Simphony. +This guide walks through the main ways to set up, build, test, and run Simphony. +The Dev Container is the easiest place to start because it brings the complete +toolchain with it. If you already manage the dependencies yourself, you can +skip ahead to [building directly on the host](#build-directly-on-the-host). The +later sections cover published Docker and Apptainer/Singularity images and a +test job on NERSC Perlmutter. -## Prerequisites +## Develop and test with the Dev Container -Building from source requires the software stack listed below. Running -Simphony and the GPU-backed tests additionally requires a CUDA-capable NVIDIA -GPU. +The repository's [Dev Container +configuration](../.devcontainer/devcontainer.json) gives you a consistent +development environment without installing CUDA, OptiX, or Geant4 directly on +the host. -- CUDA 12.1+ -- NVIDIA OptiX 7+ -- Geant4 11.3+ -- CMake 3.22+ -- Python 3.10+ +### Install the host tools -OptiX releases have specific [minimum NVIDIA driver -requirements](https://developer.nvidia.com/designworks/optix/downloads/legacy): +Before you begin, install [Docker +Engine](https://docs.docker.com/engine/install/) if it is not available. Then install [Dev Container CLI](https://github.com/devcontainers/cli) 0.82 or newer with npm: -| OptiX version | Release date | Minimum driver required | -|--- |---: |--- | -| 9.1.0 | December 2025 | 590 | -| 9.0.0 | February 2025 | 570 | -| 8.1.0 | October 2024 | 555 | -| 8.0.0 | August 2023 | 535 | -| 7.7.0 | March 2023 | 530.41 | -| 7.6.0 | October 2022 | 522.25 | -| 7.5.0 | June 2022 | 515.48 | -| 7.4.0 | November 2021 | 495.89 | -| 7.3.0 | April 2021 | 465.84 | -| 7.2.0 | October 2020 | 455.28 | -| 7.1.0 | June 2020 | 450 | -| 7.0.0 | August 2019 | 435.80 | +```shell +npm install -g @devcontainers/cli +``` -Optionally, if you plan to develop or run the simulation in a containerized -environment, ensure that your system has the following tools installed: +If Node.js and npm are not installed, use the [standalone +installer](https://github.com/devcontainers/cli#install-script). You only need +a CUDA-capable NVIDIA GPU and the [NVIDIA Container +Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) +when you are ready to run GPU-backed code. -- [Docker Engine](https://docs.docker.com/engine/install/) -- NVIDIA container toolkit ([installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)) +### Get the source -## Build +Clone the repository and enter the checkout: ```shell git clone https://github.com/BNLNPPS/simphony.git -cmake -S simphony -B build -cmake --build build +cd simphony ``` -## Docker +If needed, switch to an existing branch with `git switch existing-branch`, or +create one with `git switch -c new-branch`. + +### Choose dependency versions + +Skip this section if the default dependency versions meet your needs. The root +`.env` file selects the OS and toolchain used to build the Dev Container. +`.devcontainer/.env` links to it so Compose can discover the same settings. +Edit `.env` when you want to use another supported combination or experiment +with a new dependency version. -Try the latest published release image and verify that GPU-enabled code runs on -your machine: +The defaults match the `base` alias in the [published container +matrix](../README.md#published-container-images). Start with another `base` +combination from this matrix when possible. + +After editing `.env`, recreate the container so it uses the new values: ```shell -docker run --rm --gpus all ghcr.io/bnlnpps/simphony bash -lc 'simg4ox -g tests/geom/raindrop.gdml -m tests/run.mac' +devcontainer up --remove-existing-container ``` -Build the latest `simphony` image by hand: +When trying versions outside the matrix, first confirm that the corresponding +CUDA image and OptiX, Geant4, and CMake releases exist. Also check that the host +NVIDIA driver supports the selected CUDA version. The first build may take +longer because a matching published build cache may not be available. + +### Start the environment + +From the repository root, start the environment and open a shell: ```shell -docker build -t ghcr.io/bnlnpps/simphony:latest https://github.com/BNLNPPS/simphony.git +devcontainer up +devcontainer exec bash ``` -Build the development image locally: +The first `devcontainer up` builds the environment. Later runs reuse the image, +so getting back to work is much faster. + +Also recreate the container after changing the `Dockerfile` or `.devcontainer` +configuration. This is useful when you want to discard container-local state +and start fresh: ```shell -docker build -t ghcr.io/bnlnpps/simphony:develop --target=develop . +devcontainer up --remove-existing-container ``` -On a reasonably provisioned machine, building the `develop` image can take -under 10 minutes. +You do not need to recreate the container after switching source branches. The +checkout remains mounted directly into the environment. + +The default Compose project name keeps different system users from colliding, +even when they share a Docker daemon. If one account uses multiple checkouts or +runs concurrent jobs, set a unique project name before starting the container: -The repository also includes a ready-to-use devcontainer configuration in -`.devcontainer/devcontainer.json` for IDE-based development workflows. +```shell +export COMPOSE_PROJECT_NAME="simphony-${USER}-my_cool_feature" +``` + +The same configuration also works with the VS Code Dev Containers extension. + +### Build and test + +Once the shell opens, configure, build, and run the full test suite: + +```shell +cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug +cmake --build build +ctest --test-dir build +``` -Example commands for interactive and non-interactive tests: +Your source and build files stay in the host checkout, so they remain available +after the container stops. For a quicker iteration loop, list the tests, build +only the target you are changing, and run a relevant test: ```shell -docker run --rm -it -v $HOME/.Xauthority:/root/.Xauthority -e DISPLAY=$DISPLAY --net=host ghcr.io/bnlnpps/simphony:develop +ctest --test-dir build -N +cmake --build build --target simg4ox +ctest --test-dir build -R raindrop +``` + +The full suite includes GPU-backed tests. You can build without a GPU, but +running those tests requires a compatible NVIDIA driver and GPU access from the +container. + +## Build directly on the host + +If you prefer to manage the toolchain yourself, install: + +- CUDA 12.1+ +- NVIDIA OptiX 7+ +- Geant4 11.3+ +- CMake 3.22+ +- Python 3.10+ -docker run --rm -it -v $HOME:/esi -v $HOME/simphony:/workspaces/simphony -e DISPLAY=$DISPLAY -e HOME=/esi --net=host ghcr.io/bnlnpps/simphony:develop +With those dependencies available, clone, build, and test the project: -docker run ghcr.io/bnlnpps/simphony bash -c 'simg4ox -g tests/geom/sphere_leak.gdml -m tests/run.mac -c sphere_leak' +```shell +git clone https://github.com/BNLNPPS/simphony.git +cd simphony +cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug +cmake --build build +ctest --test-dir build ``` -## Singularity +Before running GPU workloads, make sure the installed driver supports your +OptiX version. The minimum driver versions are: + +| OptiX version | Release date | Minimum driver required | +|--- |---: |--- | +| 9.1.0 | December 2025 | 590 | +| 9.0.0 | February 2025 | 570 | +| 8.1.0 | October 2024 | 555 | +| 8.0.0 | August 2023 | 535 | +| 7.7.0 | March 2023 | 530.41 | +| 7.6.0 | October 2022 | 522.25 | +| 7.5.0 | June 2022 | 515.48 | +| 7.4.0 | November 2021 | 495.89 | +| 7.3.0 | April 2021 | 465.84 | +| 7.2.0 | October 2020 | 455.28 | +| 7.1.0 | June 2020 | 450 | +| 7.0.0 | August 2019 | 435.80 | + +See NVIDIA's [OptiX download +page](https://developer.nvidia.com/designworks/optix/downloads/legacy) for the +release details. -Run the latest published release image with the same smoke test: +## Run with Docker + +To try the latest published release and confirm that GPU access works: ```shell -singularity exec --nv docker://ghcr.io/bnlnpps/simphony:latest bash -lc 'simg4ox -g tests/geom/raindrop.gdml -m tests/run.mac' +docker run --rm --gpus all ghcr.io/bnlnpps/simphony simg4ox -g tests/geom/raindrop.gdml -m tests/run.mac ``` +To test an image built from your current checkout instead: + ```shell -singularity run --nv -B simphony-prefix/:/opt/simphony -B simphony:/workspaces/simphony docker://ghcr.io/bnlnpps/simphony:develop +docker build -t simphony:develop . +docker run --rm --gpus all simphony:develop simg4ox -g tests/geom/raindrop.gdml -m tests/run.mac ``` -## Running a test job at NERSC (Perlmutter) +For day-to-day development, the Dev Container is more convenient because source +edits are available immediately without rebuilding the image. + +## Run with Apptainer or Singularity -To submit a test run of `simphony` on Perlmutter, use the following example. -Update any placeholder values as needed. +On systems that provide Apptainer, run the same published release with: ```shell -sbatch scripts/submit.sh +apptainer exec --nv docker://ghcr.io/bnlnpps/simphony simg4ox -g /workspaces/simphony/tests/geom/raindrop.gdml -m /workspaces/simphony/tests/run.mac ``` -```bash -#!/bin/bash - -#SBATCH -N 1 # number of nodes -#SBATCH -C gpu # constraint: use GPU partition -#SBATCH -G 1 # request 1 GPU -#SBATCH -q regular # queue -#SBATCH -J simphony # job name -#SBATCH --mail-user= -#SBATCH --mail-type=ALL -#SBATCH -A m4402 # allocation account -#SBATCH -t 00:05:00 # time limit (hh:mm:ss) - -# Path to your image on Perlmutter -IMAGE="docker:bnlnpps/simphony:develop" -CMD='cd /src/simphony && simg4ox -g $OPTICKS_HOME/tests/geom/sphere_leak.gdml -m $OPTICKS_HOME/tests/run.mac -c sphere_leak' - -# Launch the container using Shifter -srun -n 1 -c 8 --cpu_bind=cores -G 1 --gpu-bind=single:1 shifter --image=$IMAGE /bin/bash -l -c "$CMD" +Use `singularity` in place of `apptainer` on systems that provide the older +command name. + +## Run a test job at NERSC + +To try Simphony on Perlmutter, start with the repository's [batch-job +example](../scripts/submit.sh). Review the email address, allocation, image, and +command, then submit the job: + +```shell +sbatch scripts/submit.sh ``` From 937e824e2b05896ccee6d99d1da64453b4786eaa Mon Sep 17 00:00:00 2001 From: Dmitri Smirnov Date: Thu, 30 Jul 2026 17:23:31 -0400 Subject: [PATCH 2/4] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .devcontainer/compose.devcontainer.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/compose.devcontainer.yaml b/.devcontainer/compose.devcontainer.yaml index 16d8d57b5..d8f43fa42 100644 --- a/.devcontainer/compose.devcontainer.yaml +++ b/.devcontainer/compose.devcontainer.yaml @@ -1,4 +1,4 @@ -name: simphony-${USER} +name: simphony-${USER:-dev} services: simphony: From c0c6ddf991dfa640794be1296202cb217fe19241 Mon Sep 17 00:00:00 2001 From: Dmitri Smirnov Date: Thu, 30 Jul 2026 17:21:42 -0400 Subject: [PATCH 3/4] fix --- .devcontainer/devcontainer.json | 3 +++ README.md | 5 +++-- docs/getting-started.md | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 88c46d533..b2b273e19 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,6 +6,9 @@ "containerUser": "dev", "remoteUser": "dev", "updateRemoteUserUID": true, + "hostRequirements": { + "gpu": "optional" + }, "features": { "ghcr.io/devcontainers/features/github-cli:1": {}, "./features/llvm": { diff --git a/README.md b/README.md index 79cf5e561..3724536e5 100644 --- a/README.md +++ b/README.md @@ -54,9 +54,10 @@ The root `.env` selects the OS and toolchain versions. See [Choose dependency versions](docs/getting-started.md#choose-dependency-versions) before changing them. -If you plan to run GPU-backed code, install the [NVIDIA Container +To run GPU-backed code, install the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) -on the host. +on the host. The Dev Container CLI detects the NVIDIA runtime and requests GPU +access automatically. ### Try a published image diff --git a/docs/getting-started.md b/docs/getting-started.md index 10c8a71a6..c54f76348 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -27,7 +27,8 @@ If Node.js and npm are not installed, use the [standalone installer](https://github.com/devcontainers/cli#install-script). You only need a CUDA-capable NVIDIA GPU and the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) -when you are ready to run GPU-backed code. +when you are ready to run GPU-backed code. The Dev Container CLI detects the +NVIDIA runtime and requests GPU access automatically. ### Get the source From 71925dccbbd604fd08c1c7a2b5b5d849ecd22197 Mon Sep 17 00:00:00 2001 From: Dmitri Smirnov Date: Thu, 30 Jul 2026 17:42:09 -0400 Subject: [PATCH 4/4] minor fix [skip-ci] --- docs/getting-started.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index c54f76348..f1faec6f6 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -16,15 +16,16 @@ the host. ### Install the host tools -Before you begin, install [Docker -Engine](https://docs.docker.com/engine/install/) if it is not available. Then install [Dev Container CLI](https://github.com/devcontainers/cli) 0.82 or newer with npm: +Before you begin, make sure [Docker +Engine](https://docs.docker.com/engine/install/) is installed. Then install [Dev +Container CLI](https://github.com/devcontainers/cli) 0.82 or newer with npm: ```shell npm install -g @devcontainers/cli ``` If Node.js and npm are not installed, use the [standalone -installer](https://github.com/devcontainers/cli#install-script). You only need +installer](https://github.com/devcontainers/cli). You only need a CUDA-capable NVIDIA GPU and the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) when you are ready to run GPU-backed code. The Dev Container CLI detects the