Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
fce2787
Initial commit
amccaskey Sep 17, 2025
cd47d0f
move to a runtime polymorphic approach for devices
amccaskey Sep 18, 2025
df1d2ba
update the name
amccaskey Sep 18, 2025
285c677
cleanup
amccaskey Sep 19, 2025
94f5185
add the docker file
amccaskey Sep 19, 2025
383eb1c
Demonstrate external compiler lowering
amccaskey Sep 22, 2025
ffabc69
Update CUDA target architectures in CMakeLists.txt to include only Am…
boschmitt Dec 1, 2025
8de2b7c
Add Docker build and runtime scripts for Soft-RoCE support
boschmitt Dec 1, 2025
7aa4abf
FIXME: don't build plugins for now.
boschmitt Dec 1, 2025
a9e4190
Rename CUDA-Q QCLink to CUDA-Q NVQLink and update related files. Adju…
boschmitt Dec 1, 2025
e25f1b3
Update .clang-format to adjust include category regex for NVQLink and…
boschmitt Dec 1, 2025
2aed4af
Add the code from another POC
boschmitt Dec 2, 2025
d23daf2
Add end-to-end example for Quantum Kernel with device_call. Just the …
boschmitt Dec 2, 2025
b90a0f4
Add detailed documentation to example.md
boschmitt Dec 2, 2025
10bc442
Remove old device/trait system, keep device_ptr definition
boschmitt Dec 2, 2025
c550b8e
Reorganize configs by architectural layer
boschmitt Dec 2, 2025
2df25f1
Add QCSDevice and ControlServer (UDP control plane)
boschmitt Dec 2, 2025
c1c7ff0
Add test infrastructure (LoopbackChannel + unit tests)
boschmitt Dec 2, 2025
718e39d
Remove some old/unused files
boschmitt Dec 2, 2025
eb8a9ac
Fix headers
boschmitt Dec 2, 2025
619834c
Formatting cleanup
boschmitt Dec 2, 2025
d3605de
Add NVQLink architecture documentation
boschmitt Dec 3, 2025
ab63ea5
Add devcontainer configuration for NVQLink development environment
boschmitt Dec 3, 2025
ce797cd
Update devcontainer configuration to use a c12.6 base image for NVQLi…
boschmitt Dec 3, 2025
053059e
Adding DOCA channel based on HSB POC implementation
boschmitt Dec 4, 2025
60c3216
Merge branch bs/daemons_poc_merge into realtime/
caldwellshane Dec 24, 2025
ea0fc38
Merge remote-tracking branch 'upstream/main' into features/cudaq.real…
1tnguyen Jan 15, 2026
a323a44
Nvqlink demo (#3766)
caldwellshane Jan 19, 2026
75624d5
[Realtime] Remove cudaq-realtime components that depend on CUDA-Q (#3…
1tnguyen Jan 26, 2026
1c85467
Merge remote-tracking branch 'upstream/main' into features/cudaq.real…
1tnguyen Jan 27, 2026
bb7b470
Another round of code cleanup (#3801)
1tnguyen Jan 28, 2026
bf78ca0
Merge remote-tracking branch 'upstream/main' into features/cudaq.real…
1tnguyen Jan 29, 2026
e62fabd
Merge branch 'main' into features/cudaq.realtime
bmhowe23 Feb 3, 2026
5cc071d
Incorporate previously private updates to cudaq::realtime (#3850)
bmhowe23 Feb 4, 2026
e68b286
[Realtime] Add dependency installation script and CI pipeline (#3854)
1tnguyen Feb 5, 2026
0701838
Add symmetric TX buffer support to dispatch kernel for Hololink compa…
cketcham2333 Feb 6, 2026
8d9b78e
Add occupancy query API to force eager CUDA module loading for dispat…
cketcham2333 Feb 8, 2026
08f84b5
Separate RX/TX dispatch paths and add generic Hololink bridge skeleton
cketcham2333 Feb 10, 2026
e29a168
Add cooperative kernel support to dispatch kernel for multi-block QEC…
cketcham2333 Feb 12, 2026
81e130b
Add cooperative kernel occupancy query and use it in bridge_run()
cketcham2333 Feb 12, 2026
c004aee
Merge branch 'main' into features/cudaq.realtime
bmhowe23 Feb 13, 2026
83e02ab
Merge remote-tracking branch 'upstream/features/cudaq.realtime' into …
cketcham2333 Feb 13, 2026
ebecdfa
Updated documentation
cketcham2333 Feb 13, 2026
a0973ca
clang format
cketcham2333 Feb 13, 2026
1a202a2
Update spelling allow list
cketcham2333 Feb 13, 2026
f053e9e
More updates to spelling allowlist
cketcham2333 Feb 13, 2026
0329235
More spelling allowlist changes
cketcham2333 Feb 13, 2026
1e0535e
Put license headers in html
cketcham2333 Feb 13, 2026
7cc1074
Merge branch 'main' into features/cudaq.realtime
bmhowe23 Feb 15, 2026
b7eed83
Restore nvqlink_latency_demo.md from 75624d5a0b
bmhowe23 Feb 15, 2026
996c0b3
Merge branch 'features/cudaq.realtime' into hololink_bridge_v3
bmhowe23 Feb 16, 2026
6a8799f
Reduce changes to spelling_allowlist.txt by properly escaping some words
bmhowe23 Feb 16, 2026
8c3187a
Merge pull request #3952 from cketcham2333/hololink_bridge_v3
cketcham2333 Feb 17, 2026
dc926b6
Add install target for cudaq-realtime-dispatch (#3985)
bmhowe23 Feb 17, 2026
11b96c3
[Realtime] Rename some references to `nvqlink` as `realtime` (#3951)
1tnguyen Feb 18, 2026
fbc739a
Merge branch 'main' into features/cudaq.realtime
bmhowe23 Feb 21, 2026
d2b6e51
[Realtime] Replace HTML docs with markdown (#4010)
1tnguyen Feb 24, 2026
eea6d8d
[Realtime] Initial CUDA-Q realtime installer packaging (#4034)
1tnguyen Feb 26, 2026
6457eac
add uninstall script, cleanup install script (#4050)
mitchdz Feb 26, 2026
b3c45d2
Edit the `nvqlink_latency_demo.md` (#4059)
1tnguyen Feb 27, 2026
e8d87ef
Merge remote-tracking branch 'upstream/main' into features/cudaq.real…
1tnguyen Mar 1, 2026
0fc2d6d
[Realtime] Add a note about Connect-X NIC for NVQLink latency demo (#…
1tnguyen Mar 3, 2026
ec2fdd3
Unified single-kernel dispatch mode and Hololink bridge enhancements …
cketcham2333 Mar 3, 2026
838e000
[Realtime][Doc] Update `realtime` doc with PTP field and unified disp…
1tnguyen Mar 4, 2026
3a0559e
[Realtime] Pluggable interface for transport layer provider (#4055)
1tnguyen Mar 4, 2026
d83f308
Adapt hololink wrapper to eagostini/nvqlink immediate-connection API
cketcham2333 Mar 5, 2026
bf0b9d0
Make libcudaq-realtime transport-agnostic by moving DOCA-specific uni…
cketcham2333 Mar 5, 2026
8ac8cbb
Make unified dispatch symbol weak and fix hololink build for clean en…
cketcham2333 Mar 6, 2026
593c9e2
Fix emulator mode on DGX Spark (iGPU) and improve build portability
cketcham2333 Mar 6, 2026
8a67f28
clang format
cketcham2333 Mar 6, 2026
cab6afa
Merge pull request #4112 from cketcham2333/hololink_bridge_v5
cketcham2333 Mar 6, 2026
b5ffd88
[Realtime] Add user guide and validation script (#4092)
1tnguyen Mar 9, 2026
3c4faa5
Merge branch 'main' into features/cudaq.realtime
1tnguyen Mar 9, 2026
bff2ce1
Merge branch 'main' into features/cudaq.realtime
1tnguyen Mar 9, 2026
3b1512d
[Realtime] Explicitly specify `roce_receiver` as a Hololink target to…
1tnguyen Mar 10, 2026
ca4095e
[Realtime] Public CI with HSB 2.6 EA (#4131)
1tnguyen Mar 11, 2026
a377d75
Merge branch 'main' into features/cudaq.realtime
1tnguyen Mar 11, 2026
af49025
Fix Publishing CI yml
1tnguyen Mar 11, 2026
a2a8b4a
Fix publishing yml
1tnguyen Mar 11, 2026
5aa0675
Adjust permission of pipeline
1tnguyen Mar 11, 2026
453e5b4
Adjust permission of pipeline
1tnguyen Mar 11, 2026
f0e2469
Thread-safety for bridge interface registry
1tnguyen Mar 11, 2026
2e9f59c
Fix build
1tnguyen Mar 11, 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
17 changes: 17 additions & 0 deletions .github/pre-commit/spelling_allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ AquSim
Asynchronous
BFGS
Bloch
BlueField
Braket
CLA
CLI
Expand All @@ -23,6 +24,7 @@ CUDA
Cartesian
CentOS
Conda
ConnectX
CuPy
DCO
DGX
Expand All @@ -32,6 +34,7 @@ Deutsch
Devcontainer
Doxygen
Exponentiating
FPGA
FPGAs
Fermion
Fock
Expand All @@ -49,6 +52,8 @@ Hadamard
Hadamards
Hamiltonian
Hamiltonians
Hololink
Holoscan
Homebrew
IQM
InfiniBand
Expand All @@ -75,9 +80,11 @@ Max-Cut
Miniconda
MyST
NGC
NIC
NVIDIA
NVLink
NVQIR
NVQLink
OPX
OQC
ORCA
Expand Down Expand Up @@ -117,7 +124,9 @@ QuEra
QuTiP
Quake
Quantinuum
RDMA
RHEL
RPC
RSA
RSH
SDK
Expand All @@ -139,6 +148,7 @@ Toshiko
UCCSD
VQE
Vazirani
Verilog
WSL
Xcode
Zener
Expand Down Expand Up @@ -254,6 +264,7 @@ functors
grovers
hadamard
hamiltonian
handoff
heisenberg
homogenous
iff
Expand Down Expand Up @@ -294,6 +305,7 @@ namespaces
natively
normalization
nullary
nvcc
observables
optimizer
optimizers
Expand All @@ -306,6 +318,7 @@ parameterization
performant
photonic
photonics
pipelined
precompute
precomputed
prepend
Expand All @@ -325,13 +338,16 @@ qudits
qumode
qumodes
reStructuredText
realtime
reconfigurable
reproducibility
reusability
runtime
runtimes
rvalue
scalability
scalable
schemas
selectable
sexualized
shifter
Expand Down Expand Up @@ -365,6 +381,7 @@ superpositions
symplectic
tablegen
templated
testability
toolchain
toolchains
toolset
Expand Down
31 changes: 29 additions & 2 deletions .github/workflows/publishing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,27 @@ jobs:
retention-days: 1
if-no-files-found: error

cudaq_realtime_installers:
name: CUDA-Q Realtime installer
if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
needs: assets
permissions:
contents: read
packages: read
strategy:
matrix:
platform: [amd64, arm64]
cuda_version: ['12.6', '13.0']
fail-fast: false
uses: ./.github/workflows/realtime_prebuilt_binaries.yml
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_READONLY_TOKEN: ${{ secrets.DOCKERHUB_READONLY_TOKEN }}
with:
platform: ${{ matrix.platform }}
cuda_version: ${{ matrix.cuda_version }}
environment: ghcr-deployment

cudaq_wheels:
name: CUDA-Q Python wheels
if: ${{ toJson(fromJson(needs.assets.outputs.python_wheels).info_files) != '[]' }}
Expand Down Expand Up @@ -1394,7 +1415,7 @@ jobs:
create_release:
name: CUDA-Q Release
needs: [assets, cudaq_images, cudaq_installers, cudaq_wheels, cudaq_metapackages, macos_artifacts, metapackage_validation_macos]
needs: [assets, cudaq_images, cudaq_installers, cudaq_wheels, cudaq_metapackages, macos_artifacts, metapackage_validation_macos, cudaq_realtime_installers]
if: needs.assets.outputs.release_title && inputs.github_commit == '' && inputs.nvidia_mgpu_commit == ''
runs-on: ubuntu-latest

Expand All @@ -1421,6 +1442,12 @@ jobs:
name: ${{ needs.cudaq_metapackages.outputs.artifact_name }}
path: metapackages

- name: Download CUDA-Q Realtime installer
uses: actions/download-artifact@v4
with:
pattern: 'install_cuda_quantum_realtime_*'
path: installers

# The python wheels are uploaded as a release asset, but not pushed to anywhere else.
# Note that PyPI packages cannot be updated once pushed;
# - We could upload wheels to test-pypi when creating a release.
Expand Down Expand Up @@ -1468,7 +1495,7 @@ jobs:

clean_up:
name: Clean up
needs: [assets, cudaq_images, cudaq_installers, cudaq_wheels, cudaq_metapackages, macos_artifacts, image_validation, installer_validation, metapackage_validation_conda, metapackage_validation_macos, wheel_validation_piponly, create_release]
needs: [assets, cudaq_images, cudaq_installers, cudaq_wheels, cudaq_metapackages, macos_artifacts, cudaq_realtime_installers, image_validation, installer_validation, metapackage_validation_conda, metapackage_validation_macos, wheel_validation_piponly, create_release]
# Force this job to run even when some of the dependencies above are skipped.
if: always() && !cancelled() && needs.assets.result != 'skipped' && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled')
runs-on: ubuntu-latest
Expand Down
195 changes: 195 additions & 0 deletions .github/workflows/realtime_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
on:
workflow_dispatch:
inputs:
cache_base:
required: false
type: string
description: 'The name of the branch to use as cache base.'
default: main
push:
branches:
- "pull-request/[0-9]+"
paths:
- realtime/** # Only trigger on changes to the realtime directory
- .github/** # Also trigger on changes to GitHub workflows
merge_group:
types:
- checks_requested

name: Realtime CI

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build_installer:
name: Build CUDA Quantum Realtime assets
strategy:
matrix:
platform: [amd64, arm64]
cuda_version: ['12.6', '13.0']
fail-fast: false
uses: ./.github/workflows/realtime_prebuilt_binaries.yml
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_READONLY_TOKEN: ${{ secrets.DOCKERHUB_READONLY_TOKEN }}
with:
platform: ${{ matrix.platform }}
cuda_version: ${{ matrix.cuda_version }}

test_installer:
name: Test Installer
needs: build_installer
strategy:
matrix:
platform: [amd64, arm64]
cuda_version: ['12.6', '13.0']
distro: ['ubuntu24.04', 'ubi9']
fail-fast: false
runs-on: ${{ (contains(matrix.platform, 'arm') && 'linux-arm64-gpu-a100-latest-1') || 'linux-amd64-gpu-a100-latest-1' }}
permissions:
contents: read
packages: read

container:
# Note: in this test, we need to build a CUDA kernel (to use with CUDAQ Realtime), hence we need the CUDA toolkit, not just the runtime.
image: nvidia/cuda:${{ matrix.cuda_version }}.0-devel-${{ matrix.distro }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download installer
uses: actions/download-artifact@v4
with:
name: install_cuda_quantum_realtime_cu${{ matrix.cuda_version }}.${{ matrix.platform }}
path: ./installers

- name: Install CUDA Quantum Realtime using installer
shell: bash
run: |
cd ./installers
# Find the installer file (assuming there's only one in the directory)
installer_file=$(ls install_cuda_quantum_realtime_*)
echo "Found installer: $installer_file"
# Make the installer executable and run it
chmod +x "$installer_file"
./"$installer_file" --accept

- name: Test CUDA Quantum Realtime installation
shell: bash
run: |
# Install cmake for building a test example that uses the installed CUDA Quantum Realtime
# Install cmake depending on distro
if [[ "${{ matrix.distro }}" == "ubi9" ]]; then
dnf install -y cmake
else
apt update && apt install -y --no-install-recommends cmake
fi
# Build the test example that uses the installed CUDA Quantum Realtime
cd realtime/examples/gpu_dispatch
mkdir -p build && cd build
cmake ..
make -j$(nproc)
./dispatch_kernel

build_realtime:
name: Build
strategy:
matrix:
platform: [amd64, arm64]
cuda_version: ['12.6', '13.0']
fail-fast: false
runs-on: ${{ (contains(matrix.platform, 'arm') && 'linux-arm64-cpu8') || 'linux-amd64-cpu8' }}
permissions:
contents: read
packages: read

steps:

- name: Checkout repository
uses: actions/checkout@v4

- name: Build CUDA Quantum Realtime
uses: ./.github/actions/run-in-docker
with:
# Use a base CUDA development image for compilation, i.e., no CUDA-Q dependencies pre-installed.
image: nvidia/cuda:${{ matrix.cuda_version }}.0-devel-ubuntu24.04
volume: ${{ github.workspace }}:/workspace
shell: bash
run: |
# Note: HSB requires cmake 3.20+
apt update && apt install -y --no-install-recommends ca-certificates gpg wget
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
apt update && apt install -y kitware-archive-keyring
# Build
apt update && apt install -y --no-install-recommends cmake git ninja-build nvcomp
cd /workspace/realtime
bash scripts/install_dev_prerequisites.sh
# Build HSB (GPU RoCE transceiver and hololink_core)
export CUDA_NATIVE_ARCH=${{ (contains(matrix.cuda_version, '12') && '80-real;90') || '80-real;90-real;100f-real;110-real;120-real;100-virtual' }}
cd /workspace/ && git clone -b release-2.6.0-EA https://github.com/nvidia-holoscan/holoscan-sensor-bridge.git && cd holoscan-sensor-bridge
cmake -G Ninja -S /workspace/holoscan-sensor-bridge -B /workspace/holoscan-sensor-bridge/build -DCMAKE_BUILD_TYPE=Release -DHOLOLINK_BUILD_ONLY_NATIVE=OFF -DHOLOLINK_BUILD_PYTHON=OFF -DHOLOLINK_BUILD_TESTS=OFF -DHOLOLINK_BUILD_TOOLS=OFF -DHOLOLINK_BUILD_EXAMPLES=OFF -DHOLOLINK_BUILD_EMULATOR=OFF
cmake --build /workspace/holoscan-sensor-bridge/build --target roce_receiver gpu_roce_transceiver hololink_core
# Build CUDA-Q Realtime
cd /workspace/realtime
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCUDAQ_REALTIME_BUILD_TESTS=ON -DCUDAQ_REALTIME_ENABLE_HOLOLINK_TOOLS=ON -DHOLOSCAN_SENSOR_BRIDGE_SOURCE_DIR=/workspace/holoscan-sensor-bridge -DHOLOSCAN_SENSOR_BRIDGE_BUILD_DIR=/workspace/holoscan-sensor-bridge/build/ -DCMAKE_INSTALL_PREFIX=/workspace/installer
make -j$(nproc) install

- name: 'Tar files'
run: cd ${{ github.workspace }}/realtime/build && tar czf ${{ github.workspace }}/build_artifacts.tgz *

- name: Upload binary artifact
uses: actions/upload-artifact@v4
with:
name: cuda-quantum-realtime-binaries-${{ matrix.platform }}-cu${{ matrix.cuda_version }}
path: build_artifacts.tgz
retention-days: 1
if-no-files-found: error

- name: Upload installer artifact
uses: actions/upload-artifact@v4
with:
name: cuda-quantum-realtime-installer-${{ matrix.platform }}-cu${{ matrix.cuda_version }}
path: ${{ github.workspace }}/installer
retention-days: 1
if-no-files-found: error

test_realtime:
name: Test
needs: build_realtime
strategy:
matrix:
platform: [amd64, arm64]
cuda_version: ['12.6', '13.0']
fail-fast: false
runs-on: ${{ (contains(matrix.platform, 'arm') && 'linux-arm64-gpu-a100-latest-1') || 'linux-amd64-gpu-a100-latest-1' }}
permissions:
contents: read
packages: read

container:
# Use a base CUDA runtime image for testing
image: nvidia/cuda:${{ matrix.cuda_version }}.0-runtime-ubuntu24.04

steps:

- name: Download binary artifact
uses: actions/download-artifact@v4
with:
name: cuda-quantum-realtime-binaries-${{ matrix.platform }}-cu${{ matrix.cuda_version }}
path: ./realtime_build_artifacts

- name: Extract files
run: mkdir -p /workspace/realtime/build && tar -xvzf ./realtime_build_artifacts/build_artifacts.tgz -C /workspace/realtime/build

- name: Test CUDA Quantum Realtime
shell: bash
run: |
# Install cmake for ctest
apt update && apt install -y --no-install-recommends cmake
cd /workspace/realtime/build
ctest -V
Loading
Loading