Skip to content

Commit 54e9ff2

Browse files
committed
CI: target cuda-quantum 0.15.x dev/wheel images for release testing
Adapt CI to build/test against the 0.15.x cuda-quantum images (per #702), keeping source untouched: - Add cudaq-dev-images.json image map (sha256-pinned devcontainers) and plumb it through pr_workflow into all_libs/docs/lib_qec/lib_solvers. - Bump wheel/devdeps base images to gcc12-cudaqx-0.15.0. - Install cmake<4 where the 0.15 container ships cmake 3.28 (HSB needs >=3.30.4). - build_dev: resolve cudaq commit date from the pinned repo (supports fork refs); drop proprietary cudevice archive wiring not shipped in this release. Signed-off-by: Melody Ren <melodyr@nvidia.com>
1 parent 1611273 commit 54e9ff2

15 files changed

Lines changed: 65 additions & 34 deletions

.github/actions/build-lib/build_all.sh

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ _rt_flag=""
1010
if [ -n "$CUDAQ_REALTIME_ROOT" ]; then
1111
_rt_flag="-DCUDAQ_REALTIME_ROOT=$CUDAQ_REALTIME_ROOT"
1212
fi
13-
_prop_archive_flag=""
14-
if [ -n "$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE" ]; then
15-
_prop_archive_flag="-DCUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE=$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE"
16-
fi
1713

1814
cmake -S . -B "$build_dir" \
1915
-DCMAKE_BUILD_TYPE=Release \
@@ -26,7 +22,6 @@ cmake -S . -B "$build_dir" \
2622
-DCUDAQX_INCLUDE_TESTS=ON \
2723
-DCUDAQX_BINDINGS_PYTHON=ON \
2824
-DCMAKE_INSTALL_PREFIX="$install_prefix" \
29-
$_rt_flag \
30-
$_prop_archive_flag
25+
$_rt_flag
3126

3227
cmake --build "$build_dir" --target install -j 4

.github/actions/build-lib/build_qec.sh

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ if [ -z "$CUDAQ_REALTIME_ROOT" ]; then
3232
CUDA_MAJOR_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9]\+\).*$/\1/p')
3333
apt-get update && apt-get install -y --no-install-recommends \
3434
ninja-build curl pkg-config
35+
# HSB -> find_package(holoscan) -> rapids_logger requires cmake >= 3.30.4;
36+
# the CI container ships cmake 3.28.
37+
pip install 'cmake<4'
38+
export PATH="$(python3 -c 'import cmake,os;print(os.path.join(os.path.dirname(cmake.__file__),"data","bin"))'):$PATH"
3539

3640
# Add DOCA repo and install only the GPUNetIO dev package (not doca-all)
3741
DOCA_ARCH=$(uname -m)
@@ -117,11 +121,6 @@ fi
117121
HSB_ROOT=/tmp/holoscan-sensor-bridge
118122
HSB_BUILD=${HSB_ROOT}/build
119123

120-
_prop_archive_flag=""
121-
if [ -n "$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE" ]; then
122-
_prop_archive_flag="-DCUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE=$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE"
123-
fi
124-
125124
cmake -S libs/qec -B "$build_dir" \
126125
-DCMAKE_BUILD_TYPE=Release \
127126
-DCMAKE_C_COMPILER=gcc-12 \
@@ -135,7 +134,6 @@ cmake -S libs/qec -B "$build_dir" \
135134
-DCUDAQ_REALTIME_ROOT=$CUDAQ_REALTIME_ROOT \
136135
-DCUDAQX_QEC_ENABLE_HOLOLINK_TOOLS=ON \
137136
-DHOLOSCAN_SENSOR_BRIDGE_SOURCE_DIR=$HSB_ROOT \
138-
-DHOLOSCAN_SENSOR_BRIDGE_BUILD_DIR=$HSB_BUILD \
139-
$_prop_archive_flag
137+
-DHOLOSCAN_SENSOR_BRIDGE_BUILD_DIR=$HSB_BUILD
140138

141139
cmake --build "$build_dir" --target install -j 4

.github/actions/get-cudaq-wheels/action.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ runs:
125125
context: cudaq
126126
file: ./cudaq/docker/release/cudaq.wheel.Dockerfile
127127
build-args: |
128-
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-main
128+
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-cudaqx-0.15.0
129129
release_version=0.14.99
130130
python_version=3.11
131131
outputs: /cudaq-wheels
@@ -137,7 +137,7 @@ runs:
137137
context: cudaq
138138
file: ./cudaq/docker/release/cudaq.wheel.Dockerfile
139139
build-args: |
140-
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-main
140+
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-cudaqx-0.15.0
141141
release_version=0.14.99
142142
python_version=3.12
143143
outputs: /cudaq-wheels
@@ -149,7 +149,7 @@ runs:
149149
context: cudaq
150150
file: ./cudaq/docker/release/cudaq.wheel.Dockerfile
151151
build-args: |
152-
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-main
152+
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-cudaqx-0.15.0
153153
release_version=0.14.99
154154
python_version=3.13
155155
outputs: /cudaq-wheels

.github/workflows/all_libs.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ on:
1515
type: string
1616
default: ''
1717
required: false
18+
cudaq_dev_images:
19+
type: string
20+
default: '{"amd64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main","amd64-cu13.0":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu13.0-gcc12-main","arm64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:arm64-cu12.6-gcc12-main","arm64-cu13.0":"ghcr.io/nvidia/cuda-quantum-devcontainer:arm64-cu13.0-gcc12-main"}'
21+
required: false
1822

1923
jobs:
2024
build-and-test:
@@ -25,7 +29,7 @@ jobs:
2529
platform: ['amd64', 'arm64']
2630
cuda_version: ['12.6', '13.0']
2731
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-cpu8', matrix.platform) || 'ubuntu-latest' }}
28-
container: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
32+
container: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
2933
permissions:
3034
actions: write
3135
contents: read

.github/workflows/all_libs_release.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,7 @@ jobs:
8585
# Extract the decoder that needs to be embedded in the release
8686
mkdir -p tmp
8787
tar -C tmp -xzvf nv-qldpc-decoder-${{ matrix.runner.arch }}_ubuntu24.04_cuda${{ matrix.cuda_version }}_release.tar.gz
88-
test -f tmp/libcudaq-qec-nv-qldpc-decoder.so
89-
test -f tmp/libcudaq-qec-realtime-cudevice-proprietary.a
9088
echo "QEC_EXTERNAL_DECODERS=$(pwd)/tmp/libcudaq-qec-nv-qldpc-decoder.so" >> $GITHUB_ENV
91-
echo "CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE=$(pwd)/tmp/libcudaq-qec-realtime-cudevice-proprietary.a" >> $GITHUB_ENV
9289
fi
9390
shell: bash
9491

.github/workflows/build_dev.yaml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
id: get-cudaq-version-short
5050
run: |
5151
shortref=$(echo "${{ steps.get-cudaq-version.outputs.ref }}" | head -c8)
52-
commit_date=$(curl -s "https://api.github.com/repos/NVIDIA/cuda-quantum/commits/${{ steps.get-cudaq-version.outputs.ref }}" | jq -r '.commit.committer.date' | cut -dT -f1)
52+
commit_date=$(curl -s "https://api.github.com/repos/${{ steps.get-cudaq-version.outputs.repo }}/commits/${{ steps.get-cudaq-version.outputs.ref }}" | jq -r '.commit.committer.date' | cut -dT -f1)
5353
echo "shortref=$shortref" >> $GITHUB_OUTPUT
5454
echo "commit_date=$commit_date" >> $GITHUB_OUTPUT
5555
@@ -86,8 +86,14 @@ jobs:
8686
if [ -n "$other_tag" ]; then
8787
TAGS+=" -t ghcr.io/nvidia/cudaqx-dev:${other_tag}-${{ matrix.platform }}-cu${{ matrix.cuda_version }}"
8888
fi
89+
image_key="${{ matrix.platform }}-cu${{ matrix.cuda_version }}"
90+
base_image=$(jq -r --arg key "$image_key" '.[$key] // empty' .github/workflows/cudaq-dev-images.json)
91+
if [ -z "$base_image" ]; then
92+
echo "No CUDA-Q devcontainer image configured for $image_key" >&2
93+
exit 1
94+
fi
8995
docker build $TAGS -f docker/build_env/cudaqx.dev.Dockerfile . \
90-
--build-arg base_image=ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main \
96+
--build-arg base_image="$base_image" \
9197
--build-arg cuda_version=${{ matrix.cuda_version }}
9298
docker push -a ghcr.io/nvidia/cudaqx-dev
9399
shell: bash --noprofile --norc -euo pipefail {0}
@@ -159,7 +165,7 @@ jobs:
159165
context: cudaq
160166
file: cudaq/docker/release/cudaq.wheel.Dockerfile
161167
build-args: |
162-
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
168+
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-cudaqx-0.15.0
163169
release_version=0.14.99
164170
python_version=${{ matrix.python }}
165171
cuda_version=${{ matrix.cuda_version }}
@@ -190,7 +196,7 @@ jobs:
190196
if [ -n "$other_tag" ]; then
191197
TAGS+=" -t ghcr.io/nvidia/cudaqx-dev:${other_tag}-py${{ matrix.python }}-${{ matrix.platform }}-cu${{ matrix.cuda_version }}"
192198
fi
193-
BUILDARGS="--build-arg base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main"
199+
BUILDARGS="--build-arg base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-cudaqx-0.15.0"
194200
BUILDARGS+=" --build-arg python_version=${{ matrix.python }}"
195201
BUILDARGS+=" --build-arg cuda_version=${{ matrix.cuda_version }}"
196202
BUILDARGS+=" --ulimit nofile=1048576:1048576"

.github/workflows/build_wheels.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999
# FIXME: there is no guarantee that this CUDA-Q image aligns with the CUDA-Q
100100
# commit that we are trying to align with.
101101
container:
102-
image: ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
102+
image: ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-cudaqx-0.15.0
103103
options: --ulimit nofile=1048576:1048576
104104
permissions:
105105
actions: write
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"amd64-cu12.6": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:46d0b72f85b083b8fb20af243eeca1308fbdee4fa2e87d1166f029a38d0d72e7",
3+
"amd64-cu13.0": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:da93c244cfe54d154b486e8e79ec94f2da6103ad0345246d8779286a72b60d6a",
4+
"arm64-cu12.6": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:c8928ddfc5d9acea2dcd9cb5fdfd11636b0aac73b1717c915d82ad972759261a",
5+
"arm64-cu13.0": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:50ebd24617f930e5e8cf8d2aa3cca51efe3dddb2ebbe690ba2d2601f2c4a7b6e"
6+
}

.github/workflows/docs.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ on:
1919
type: string
2020
default: ''
2121
required: false
22+
cudaq_dev_images:
23+
type: string
24+
default: '{"amd64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main","amd64-cu13.0":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu13.0-gcc12-main","arm64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:arm64-cu12.6-gcc12-main","arm64-cu13.0":"ghcr.io/nvidia/cuda-quantum-devcontainer:arm64-cu13.0-gcc12-main"}'
25+
required: false
2226
workflow_dispatch:
2327
inputs:
2428
deploy_docs:
@@ -44,7 +48,7 @@ jobs:
4448
build:
4549
name: Build
4650
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && 'linux-amd64-cpu8' || 'ubuntu-latest' }}
47-
container: ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main
51+
container: ${{ fromJSON(inputs.cudaq_dev_images || '{"amd64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main"}')['amd64-cu12.6'] }}
4852
permissions:
4953
actions: write
5054
contents: read

.github/workflows/lib_qec.yaml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ on:
1515
type: string
1616
default: ''
1717
required: false
18+
cudaq_dev_images:
19+
type: string
20+
default: '{"amd64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main","amd64-cu13.0":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu13.0-gcc12-main","arm64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:arm64-cu12.6-gcc12-main","arm64-cu13.0":"ghcr.io/nvidia/cuda-quantum-devcontainer:arm64-cu13.0-gcc12-main"}'
21+
required: false
1822

1923
jobs:
2024
build-and-test:
@@ -26,7 +30,7 @@ jobs:
2630
cuda_version: ['12.6', '13.0']
2731
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-cpu8', matrix.platform) || 'ubuntu-latest' }}
2832
container:
29-
image: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
33+
image: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
3034
# SYS_NICE: the default seccomp profile only admits the NUMA memory-policy
3135
# syscalls (set_mempolicy/get_mempolicy/mbind) with this capability, which
3236
# the hardware-affinity tests exercise.
@@ -166,7 +170,7 @@ jobs:
166170
cuda_version: ['12.6', '13.0']
167171
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-gpu-a100-latest-1', matrix.platform) || 'ubuntu-latest' }}
168172
container:
169-
image: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
173+
image: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
170174
env:
171175
NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }}
172176
permissions:
@@ -261,7 +265,7 @@ jobs:
261265
cuda_version: ['13.0']
262266
runs-on: ${{ matrix.runner.label }}
263267
container:
264-
image: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.runner.arch }}-cu${{ matrix.cuda_version }}-gcc12-main
268+
image: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.runner.arch, matrix.cuda_version)] }}
265269
# SYS_NICE: see build-and-test.
266270
options: --cap-add=SYS_NICE
267271
env:

0 commit comments

Comments
 (0)