Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
d643014
update .cudaq_version to cherrypicked fork branch
anjbur Jul 16, 2026
fb55cd7
add JSON file to pull devcontainer tags from
anjbur Jul 16, 2026
09677ad
temporarily disable wheel builds
anjbur Jul 16, 2026
8e13628
switch to 0.15.0 devcontainer images
anjbur Jul 16, 2026
8680659
update cudaq version
anjbur Jul 16, 2026
1209c3a
update wheel build to use 0.15.0 manylinux image instead of main version
anjbur Jul 16, 2026
14628f4
Revert "Dev image updates for CMake 4 compatibility (#689)"
anjbur Jul 16, 2026
0557b07
Revert "Bump CUDA-Q commit (#688)"
anjbur Jul 16, 2026
47b4df4
Revert "Bump CUDA-Q commit and fix for breaking changes (#654)"
anjbur Jul 16, 2026
463dd95
Revert "Bump CUDA-Q commit (with non-trivial updates) (#640)"
anjbur Jul 16, 2026
7ad93f0
Revert "Remove `hololink_gpu_id` env var (#692)"
anjbur Jul 16, 2026
b67e000
Revert "Fix GB200 gpu_roce decoding-server validation issues (#683)"
anjbur Jul 16, 2026
4797047
Revert "Add a TRT+PyMatching decoder profile to the HSB FPGA decoding…
anjbur Jul 16, 2026
5e2fd52
Revert "qec/realtime: Relay BP (nv-qldpc) gpu_roce profile for the HS…
anjbur Jul 16, 2026
3668ad7
Revert "Fix CQR surface-code test to use Relay-BP (#691)"
anjbur Jul 16, 2026
b97328b
Revert "Declarative decoder parameter schemas: pluggable realtime dec…
anjbur Jul 16, 2026
3fbc424
Revert "Fix surface-code hook errors with an orientation-aware CNOT s…
anjbur Jul 16, 2026
e8c6c3f
Revert "Make trt throw if fails to do inference (#680)"
anjbur Jul 16, 2026
a458f35
Revert "Add boundary-aware overloads for canonicalize_for_rounds and …
anjbur Jul 16, 2026
80c1b34
Revert "Follow up fixes for pinning hardware device (#678)"
anjbur Jul 16, 2026
af36e29
Revert "feat(qec): add cuda_device_id placement knob for GPU decoders…
anjbur Jul 16, 2026
0f6053b
Revert "Standalone Realtime QEC Decoding Server (#666)"
anjbur Jul 16, 2026
da9253f
Revert "Add QEC decoder-server core and CQR adapter (#653)"
anjbur Jul 16, 2026
aa9ed33
Revert "qec/realtime: device-graph scheduler for per-round Hololink Q…
anjbur Jul 16, 2026
655667c
Cherry pick PR #690 (2cd873bd) back, excluding decoding-server transp…
anjbur Jul 16, 2026
736ec49
Cherry pick PR #678 (9c5c2308) back, excluding decoding-server integr…
anjbur Jul 16, 2026
7f98ae6
Cherry pick PR #656 (131c4d05) back
anjbur Jul 16, 2026
e46b35f
Cherry pick PR #680 (efbb6f9e ) back, excluding decoding-server integ…
anjbur Jul 16, 2026
df69a07
Cherry pick PR #672 (22772f7f ) back, excluding decoding-server integ…
anjbur Jul 16, 2026
2eea417
Revert "Add host-side in-process-RPC path for real-time QEC decoding …
anjbur Jul 16, 2026
04beba3
Restore two-ring HOST_CALL ABI compatibility from CUDA-QX PR #609 (92…
anjbur Jul 16, 2026
4cbd3ef
re-enable wheel build
anjbur Jul 16, 2026
87a7e05
Cherry-pick back commit from PR 609:
cketcham2333 Jun 12, 2026
7ca1659
Update cudaqx-dev image for 0.15.0 base image
anjbur Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cudaq_version
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"cudaq": {
"repository": "NVIDIA/cuda-quantum",
"ref": "5f0ee5be3bf5cb33afb544d9f01af77b1d50b26e"
"repository": "anjbur/cuda-quantum",
"ref": "d16bf937633078e81e558a4c4972fa811153eb42"
}
}
7 changes: 1 addition & 6 deletions .github/actions/build-lib/build_all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@ _rt_flag=""
if [ -n "$CUDAQ_REALTIME_ROOT" ]; then
_rt_flag="-DCUDAQ_REALTIME_ROOT=$CUDAQ_REALTIME_ROOT"
fi
_prop_archive_flag=""
if [ -n "$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE" ]; then
_prop_archive_flag="-DCUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE=$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE"
fi

cmake -S . -B "$build_dir" \
-DCMAKE_BUILD_TYPE=Release \
Expand All @@ -26,7 +22,6 @@ cmake -S . -B "$build_dir" \
-DCUDAQX_INCLUDE_TESTS=ON \
-DCUDAQX_BINDINGS_PYTHON=ON \
-DCMAKE_INSTALL_PREFIX="$install_prefix" \
$_rt_flag \
$_prop_archive_flag
$_rt_flag

cmake --build "$build_dir" --target install -j 4
12 changes: 5 additions & 7 deletions .github/actions/build-lib/build_qec.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ if [ -z "$CUDAQ_REALTIME_ROOT" ]; then
CUDA_MAJOR_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9]\+\).*$/\1/p')
apt-get update && apt-get install -y --no-install-recommends \
ninja-build curl pkg-config
# HSB -> find_package(holoscan) -> rapids_logger requires cmake >= 3.30.4;
# the CI container ships cmake 3.28.
pip install 'cmake<4'
export PATH="$(python3 -c 'import cmake,os;print(os.path.join(os.path.dirname(cmake.__file__),"data","bin"))'):$PATH"

# Add DOCA repo and install only the GPUNetIO dev package (not doca-all)
DOCA_ARCH=$(uname -m)
Expand Down Expand Up @@ -114,11 +118,6 @@ fi
HSB_ROOT=/tmp/holoscan-sensor-bridge
HSB_BUILD=${HSB_ROOT}/build

_prop_archive_flag=""
if [ -n "$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE" ]; then
_prop_archive_flag="-DCUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE=$CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE"
fi

cmake -S libs/qec -B "$build_dir" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=gcc-12 \
Expand All @@ -132,7 +131,6 @@ cmake -S libs/qec -B "$build_dir" \
-DCUDAQ_REALTIME_ROOT=$CUDAQ_REALTIME_ROOT \
-DCUDAQX_QEC_ENABLE_HOLOLINK_TOOLS=ON \
-DHOLOSCAN_SENSOR_BRIDGE_SOURCE_DIR=$HSB_ROOT \
-DHOLOSCAN_SENSOR_BRIDGE_BUILD_DIR=$HSB_BUILD \
$_prop_archive_flag
-DHOLOSCAN_SENSOR_BRIDGE_BUILD_DIR=$HSB_BUILD

cmake --build "$build_dir" --target install -j 4
6 changes: 3 additions & 3 deletions .github/actions/get-cudaq-wheels/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ runs:
context: cudaq
file: ./cudaq/docker/release/cudaq.wheel.Dockerfile
build-args: |
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-main
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-cudaqx-0.15.0
release_version=0.14.99
python_version=3.11
outputs: /cudaq-wheels
Expand All @@ -137,7 +137,7 @@ runs:
context: cudaq
file: ./cudaq/docker/release/cudaq.wheel.Dockerfile
build-args: |
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-main
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-cudaqx-0.15.0
release_version=0.14.99
python_version=3.12
outputs: /cudaq-wheels
Expand All @@ -149,7 +149,7 @@ runs:
context: cudaq
file: ./cudaq/docker/release/cudaq.wheel.Dockerfile
build-args: |
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-main
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ inputs.platform }}-cu${{ inputs.cuda_version }}-gcc12-cudaqx-0.15.0
release_version=0.14.99
python_version=3.13
outputs: /cudaq-wheels
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/all_libs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ on:
type: string
default: ''
required: false
cudaq_dev_images:
type: string
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"}'
required: false

jobs:
build-and-test:
Expand All @@ -25,7 +29,7 @@ jobs:
platform: ['amd64', 'arm64']
cuda_version: ['12.6', '13.0']
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-cpu8', matrix.platform) || 'ubuntu-latest' }}
container: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
container: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
permissions:
actions: write
contents: read
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/all_libs_release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,7 @@ jobs:
# Extract the decoder that needs to be embedded in the release
mkdir -p tmp
tar -C tmp -xzvf nv-qldpc-decoder-${{ matrix.runner.arch }}_ubuntu24.04_cuda${{ matrix.cuda_version }}_release.tar.gz
test -f tmp/libcudaq-qec-nv-qldpc-decoder.so
test -f tmp/libcudaq-qec-realtime-cudevice-proprietary.a
echo "QEC_EXTERNAL_DECODERS=$(pwd)/tmp/libcudaq-qec-nv-qldpc-decoder.so" >> $GITHUB_ENV
echo "CUDAQ_QEC_REALTIME_CUDEVICE_PROPRIETARY_ARCHIVE=$(pwd)/tmp/libcudaq-qec-realtime-cudevice-proprietary.a" >> $GITHUB_ENV
fi
shell: bash

Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/build_dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
id: get-cudaq-version-short
run: |
shortref=$(echo "${{ steps.get-cudaq-version.outputs.ref }}" | head -c8)
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)
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)
echo "shortref=$shortref" >> $GITHUB_OUTPUT
echo "commit_date=$commit_date" >> $GITHUB_OUTPUT

Expand Down Expand Up @@ -86,8 +86,14 @@ jobs:
if [ -n "$other_tag" ]; then
TAGS+=" -t ghcr.io/nvidia/cudaqx-dev:${other_tag}-${{ matrix.platform }}-cu${{ matrix.cuda_version }}"
fi
image_key="${{ matrix.platform }}-cu${{ matrix.cuda_version }}"
base_image=$(jq -r --arg key "$image_key" '.[$key] // empty' .github/workflows/cudaq-dev-images.json)
if [ -z "$base_image" ]; then
echo "No CUDA-Q devcontainer image configured for $image_key" >&2
exit 1
fi
docker build $TAGS -f docker/build_env/cudaqx.dev.Dockerfile . \
--build-arg base_image=ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main \
--build-arg base_image="$base_image" \
--build-arg cuda_version=${{ matrix.cuda_version }}
docker push -a ghcr.io/nvidia/cudaqx-dev
shell: bash --noprofile --norc -euo pipefail {0}
Expand Down Expand Up @@ -159,7 +165,7 @@ jobs:
context: cudaq
file: cudaq/docker/release/cudaq.wheel.Dockerfile
build-args: |
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-cudaqx-0.15.0
release_version=0.14.99
python_version=${{ matrix.python }}
cuda_version=${{ matrix.cuda_version }}
Expand Down Expand Up @@ -190,7 +196,7 @@ jobs:
if [ -n "$other_tag" ]; then
TAGS+=" -t ghcr.io/nvidia/cudaqx-dev:${other_tag}-py${{ matrix.python }}-${{ matrix.platform }}-cu${{ matrix.cuda_version }}"
fi
BUILDARGS="--build-arg base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main"
BUILDARGS="--build-arg base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-cudaqx-0.15.0"
BUILDARGS+=" --build-arg python_version=${{ matrix.python }}"
BUILDARGS+=" --build-arg cuda_version=${{ matrix.cuda_version }}"
BUILDARGS+=" --ulimit nofile=1048576:1048576"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_wheels.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ jobs:
# FIXME: there is no guarantee that this CUDA-Q image aligns with the CUDA-Q
# commit that we are trying to align with.
container:
image: ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
image: ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-cudaqx-0.15.0
options: --ulimit nofile=1048576:1048576
permissions:
actions: write
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/cudaq-dev-images.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"amd64-cu12.6": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:46d0b72f85b083b8fb20af243eeca1308fbdee4fa2e87d1166f029a38d0d72e7",
"amd64-cu13.0": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:da93c244cfe54d154b486e8e79ec94f2da6103ad0345246d8779286a72b60d6a",
"arm64-cu12.6": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:c8928ddfc5d9acea2dcd9cb5fdfd11636b0aac73b1717c915d82ad972759261a",
"arm64-cu13.0": "ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:50ebd24617f930e5e8cf8d2aa3cca51efe3dddb2ebbe690ba2d2601f2c4a7b6e"
}
6 changes: 5 additions & 1 deletion .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ on:
type: string
default: ''
required: false
cudaq_dev_images:
type: string
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"}'
required: false
workflow_dispatch:
inputs:
deploy_docs:
Expand All @@ -44,7 +48,7 @@ jobs:
build:
name: Build
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && 'linux-amd64-cpu8' || 'ubuntu-latest' }}
container: ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main
container: ${{ fromJSON(inputs.cudaq_dev_images || '{"amd64-cu12.6":"ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main"}')['amd64-cu12.6'] }}
permissions:
actions: write
contents: read
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/lib_qec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ on:
type: string
default: ''
required: false
cudaq_dev_images:
type: string
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"}'
required: false

jobs:
build-and-test:
Expand All @@ -26,7 +30,7 @@ jobs:
cuda_version: ['12.6', '13.0']
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-cpu8', matrix.platform) || 'ubuntu-latest' }}
container:
image: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
image: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
# SYS_NICE: the default seccomp profile only admits the NUMA memory-policy
# syscalls (set_mempolicy/get_mempolicy/mbind) with this capability, which
# the hardware-affinity tests exercise.
Expand Down Expand Up @@ -166,7 +170,7 @@ jobs:
cuda_version: ['12.6', '13.0']
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-gpu-a100-latest-1', matrix.platform) || 'ubuntu-latest' }}
container:
image: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
image: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
env:
NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }}
permissions:
Expand Down Expand Up @@ -261,7 +265,7 @@ jobs:
cuda_version: ['13.0']
runs-on: ${{ matrix.runner.label }}
container:
image: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.runner.arch }}-cu${{ matrix.cuda_version }}-gcc12-main
image: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.runner.arch, matrix.cuda_version)] }}
# SYS_NICE: see build-and-test.
options: --cap-add=SYS_NICE
env:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/lib_solvers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ on:
type: string
default: ''
required: false
cudaq_dev_images:
type: string
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"}'
required: false

jobs:
build-and-test:
Expand All @@ -25,7 +29,7 @@ jobs:
platform: ['amd64', 'arm64']
cuda_version: ['12.6', '13.0']
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-cpu8', matrix.platform) || 'ubuntu-latest' }}
container: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
container: ${{ fromJSON(inputs.cudaq_dev_images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
permissions:
actions: write
contents: read
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/pr_workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
build-examples-solvers: ${{ steps.filter.outputs.build-examples-solvers }}
pr-number: ${{ steps.export-pr-info.outputs.pr_number }}
build-wheels: ${{ steps.filter.outputs.build-wheels }}
cudaq-dev-images: ${{ steps.cudaq-dev-images.outputs.images }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -40,6 +41,11 @@ jobs:
run: |
echo "pr_number=${{ fromJSON(steps.get-pr-info.outputs.pr-info).number }}" >> $GITHUB_OUTPUT

- name: Set CUDA-Q dev container images
id: cudaq-dev-images
run: |
echo "images=$(jq -c . .github/workflows/cudaq-dev-images.json)" >> "$GITHUB_OUTPUT"

- name: Check what needs testing
uses: dorny/paths-filter@v3
id: filter
Expand All @@ -49,6 +55,7 @@ jobs:
build-cudaq:
- '.github/actions/get-cudaq-build/**'
- '.github/actions/get-cudaq-version/**'
- '.github/workflows/cudaq-dev-images.json'
- '.cudaq_version'
build-docs:
- '.github/workflows/docs.yaml'
Expand Down Expand Up @@ -122,7 +129,7 @@ jobs:
platform: ['amd64', 'arm64']
cuda_version: ['12.6', '13.0']
runs-on: ${{ startsWith(github.repository, 'NVIDIA/cudaqx') && format('linux-{0}-cpu32', matrix.platform) || 'ubuntu-latest' }}
container: ghcr.io/nvidia/cuda-quantum-devcontainer:${{ matrix.platform }}-cu${{ matrix.cuda_version }}-gcc12-main
container: ${{ fromJSON(needs.check-changes.outputs.cudaq-dev-images)[format('{0}-cu{1}', matrix.platform, matrix.cuda_version)] }}
permissions:
actions: write
contents: read
Expand Down Expand Up @@ -163,6 +170,7 @@ jobs:
uses: ./.github/workflows/docs.yaml
with:
cache_key_suffix: pr${{ needs.check-changes.outputs.pr-number }}
cudaq_dev_images: ${{ needs.check-changes.outputs.cudaq-dev-images }}

build-all:
name: All libs
Expand All @@ -173,6 +181,7 @@ jobs:
uses: ./.github/workflows/all_libs.yaml
with:
cache_key_suffix: pr${{ needs.check-changes.outputs.pr-number }}
cudaq_dev_images: ${{ needs.check-changes.outputs.cudaq-dev-images }}

build-qec:
name: QEC
Expand All @@ -187,6 +196,7 @@ jobs:
uses: ./.github/workflows/lib_qec.yaml
with:
cache_key_suffix: pr${{ needs.check-changes.outputs.pr-number }}
cudaq_dev_images: ${{ needs.check-changes.outputs.cudaq-dev-images }}

build-solvers:
name: Solvers
Expand All @@ -201,6 +211,7 @@ jobs:
uses: ./.github/workflows/lib_solvers.yaml
with:
cache_key_suffix: pr${{ needs.check-changes.outputs.pr-number }}
cudaq_dev_images: ${{ needs.check-changes.outputs.cudaq-dev-images }}

build-wheels:
name: Wheels
Expand Down
20 changes: 3 additions & 17 deletions cmake/Modules/CUDA-QX.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -88,29 +88,15 @@ function(cudaqx_add_device_code LIBRARY_NAME)
foreach(source ${ARGS_SOURCES})
get_filename_component(filename ${source} NAME_WE)
set(output_file "${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_${filename}.o")
cmake_path(GET output_file FILENAME baseName)

# nvq++ drops intermediates named after the *source* (<src>.o, <src>.qke.o,
# <src>.classic.o, ...) into its working directory, so two targets
# compiling the same source file in the same directory race and corrupt
# each other's objects under parallel builds. Isolate each object's
# compile in its own working directory.
set(work_dir "${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_${filename}.nvqpp")
file(MAKE_DIRECTORY ${work_dir})

# TODO: this custom command only depends on the source file, not on the
# headers it includes (nvq++ emits no depfile here), so header changes do
# NOT trigger recompilation -- a stale object silently survives ninja
# after e.g. a config-struct layout change (ABI-mismatch segfaults).
# Until nvq++ depfile output is wired up, `rm` the affected
# <target>_<source>.o under the build tree after header changes.
add_custom_command(
OUTPUT ${output_file}
COMMAND ${COMPILER}
${ARGS_COMPILER_FLAGS} -c -fPIC
${CMAKE_CURRENT_SOURCE_DIR}/${source} -o ${output_file}
${CMAKE_CURRENT_SOURCE_DIR}/${source} -o ${baseName}
"$<$<BOOL:${prop}>:-I $<JOIN:${prop}, -I >>"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${source} ${ARGS_DEPENDS_ON}
WORKING_DIRECTORY ${work_dir}
COMMENT "Compiling ${source} with nvq++"
VERBATIM
)
Expand Down Expand Up @@ -139,7 +125,7 @@ function(_cudaqx_import_nvqir_target target_name library_name)
set_target_properties(${target_name} PROPERTIES
IMPORTED_LOCATION "${CUDAQ_LIBRARY_DIR}/${library_name}${CMAKE_SHARED_LIBRARY_SUFFIX}"
IMPORTED_SONAME "${library_name}${CMAKE_SHARED_LIBRARY_SUFFIX}"
IMPORTED_LINK_INTERFACE_LIBRARIES "cudaq::cudaq-platform-default;cudaq::cudaq-em-default;cudaq::cudaq-mlir-runtime")
IMPORTED_LINK_INTERFACE_LIBRARIES "cudaq::cudaq-platform-default;cudaq::cudaq-em-default")
endif()
endfunction()

Expand Down
4 changes: 3 additions & 1 deletion docker/build_env/cudaqx.dev.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# the terms of the Apache License 2.0 which accompanies this distribution. #
# ============================================================================ #

ARG base_image=ghcr.io/nvidia/cuda-quantum-devcontainer:amd64-cu12.6-gcc12-main
ARG base_image=ghcr.io/nvidia/cuda-quantum-devcontainer@sha256:46d0b72f85b083b8fb20af243eeca1308fbdee4fa2e87d1166f029a38d0d72e7
FROM $base_image

ARG cuda_version=12.6
Expand All @@ -16,9 +16,11 @@ LABEL org.opencontainers.image.source="https://github.com/NVIDIA/cudaqx"
LABEL org.opencontainers.image.title="cudaqx-dev"
LABEL org.opencontainers.image.url="https://github.com/NVIDIA/cudaqx"

# FIXME: Remove the cmake install once private repos are updated.
RUN apt-get update && CUDA_DASH=$(echo $cuda_version | tr '.' '-') \
&& apt-get install -y gfortran libblas-dev jq cuda-nvtx-${CUDA_DASH} \
&& apt-get install -y git-lfs \
&& python3 -m pip install "cmake<4" --user \
&& apt-get autoremove -y --purge && apt-get clean && rm -rf /var/lib/apt/lists/*

COPY .cudaq_version /cudaq_version
Expand Down
2 changes: 1 addition & 1 deletion docker/build_env/cudaqx.wheel.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# the terms of the Apache License 2.0 which accompanies this distribution. #
# ============================================================================ #

ARG base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-amd64-cu12.6-gcc12-main
ARG base_image=ghcr.io/nvidia/cuda-quantum-devdeps:manylinux-amd64-cu12.6-cudaqx-0.15.0
FROM ${base_image}

ARG python_version=3.12
Expand Down
Loading
Loading