Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
c0a09cb
qBraid integration MVP (#4)
ryanhill1 Jun 4, 2025
925ae39
update: migrate cudaq to platform v2
TheGupta2012 Mar 13, 2026
41fe248
fix: merge conflicts
TheGupta2012 Mar 13, 2026
d74243d
add: api_key and device to set_target for qbraid
TheGupta2012 Mar 13, 2026
9cd62cf
fix: submodule hashes and v2 platform implementation and test
TheGupta2012 Apr 15, 2026
3b0a1e4
fix: formatting and headers
TheGupta2012 Apr 15, 2026
8867cd0
Clean up ghcr-ci deployments in clean_up workflow (#4324)
mitchdz Apr 15, 2026
48a1feb
Fix decomposition pattern selection for unbounded control counts (#4320)
taalexander Apr 15, 2026
06a903d
Fail earlier if counting resources from IR won't be possible (#4332)
atgeller Apr 15, 2026
84d1598
[unittest] Update the unittest to conform to new API contracts. (#4330)
schweitzpgi Apr 15, 2026
e530a25
Pybind -> Nanobind (#4311)
sacpis Apr 16, 2026
1a24c66
fix: docs for qbraid helper and update examples
TheGupta2012 Apr 16, 2026
71b9450
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 Apr 16, 2026
31bde9e
DCO Remediation Commit for Harshit <harshit.11235@gmail.com>
TheGupta2012 Apr 17, 2026
61e4b91
DCO Remediation Commit for TheGupta2012 <harshit.11235@gmail.com>
TheGupta2012 Apr 17, 2026
66a1e2d
Add stateless CompiledModuleHelper (#4338)
lmondada Apr 17, 2026
ac40cc2
removing email (#4344)
sacpis Apr 17, 2026
4235273
Add `eliminate-dead-heap-copy` pass for early `malloc` elimination (#…
1tnguyen Apr 17, 2026
8d7e922
Updating cuquantum version to 26.03.1 (#4342)
sacpis Apr 18, 2026
a45a06e
[codegen] Restore the OpenQASM2.0 pipeline (#4346)
khalatepradnya Apr 19, 2026
3e6c664
Revert `measure_result` type distinction and `!quake.measurements` in…
khalatepradnya Apr 19, 2026
863db90
Fixing Krylov notebook failure (#4348)
sacpis Apr 20, 2026
c9d0f3b
[Python] Fix overload resolution for `state.from_data` with MPS tenso…
1tnguyen Apr 20, 2026
ca69d2d
Directly invoke locally simulated python kernels with args (#4265)
atgeller Apr 20, 2026
f6ba810
fix: formatting issues, api key leak and default num of qubits
TheGupta2012 Apr 20, 2026
f4907ac
fix: headers to use 2026
TheGupta2012 Apr 20, 2026
e412f67
Split lowerQuakeCode into compilation -> CompiledModule -> codegen (#…
lmondada Apr 20, 2026
504828e
Fix for cudaq runtime build (#4353)
sacpis Apr 20, 2026
64bb8ed
add nv-slack-bot and stale issue notifier (#4345)
mitchdz Apr 20, 2026
a79cc61
fix: cmake list for qbraid to unconditionally include qbraid in the b…
TheGupta2012 Apr 21, 2026
38830db
fix: target tests for qbraid to use execution test pattern and make a…
TheGupta2012 Apr 21, 2026
39cfb72
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 Apr 21, 2026
afb6f73
Increasing the number of colors (#4355)
sacpis Apr 21, 2026
9974f3c
Fixes for state creation within kernel execution (#4352)
1tnguyen Apr 21, 2026
634737f
Bump nbconvert from 7.17.0 to 7.17.1 (#4358)
dependabot[bot] Apr 21, 2026
aa90e11
Fix sampling with mixed-basis measurements (mx/my) (#4336)
anpaz Apr 21, 2026
ccbf2a8
Introducing execution policies. Starting with providing results as re…
Renaud-K Apr 21, 2026
89ed685
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 Apr 22, 2026
7ab08ec
fix: EADDRINUSE error in CI due to port collision with HorizonServerH…
TheGupta2012 Apr 22, 2026
0299a12
Slim down CompiledModule, move out execution logic (#4356)
lmondada Apr 22, 2026
a18a400
Using Eigen matrix multiplication (#4361)
sacpis Apr 22, 2026
033cab8
schema_name -> schema_id in RecordLogParser (#4366)
sacpis Apr 22, 2026
b29e4c4
[Testing] Add tests for custom op in nested kernels (#4362)
1tnguyen Apr 22, 2026
bead54c
[Testing] Add a regression test for `cudaq.control` on sub-kernl with…
1tnguyen Apr 22, 2026
8db3d83
Fix opaque OSError when @cudaq.kernel is used in the REPL (#2593) (#4…
mitchdz Apr 23, 2026
8c33f0a
[Python] AST bridge: reject cudaq.dbg.ast aliases and reorderings (#2…
mitchdz Apr 23, 2026
9f43415
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 Apr 23, 2026
b2e4ee9
Adding coverage for if condition in a list (#4375)
sacpis Apr 23, 2026
d25183a
[NFC] Breaking up Compiler.cpp to isolate common code from policy spe…
Renaud-K Apr 23, 2026
e43b46d
add: error handling for status codes in result fetch and correspondin…
TheGupta2012 Apr 23, 2026
188d1c1
Add regression test for #2348 (#4371)
atgeller Apr 23, 2026
1c4370e
Moving CustomPassPlugin from unittests to test (#4381)
sacpis Apr 23, 2026
89d487f
Updating sample_async doc (#4383)
sacpis Apr 23, 2026
c1bae57
[Kernel Builder][OpenQASM] Handle control/adjoint entry point attribu…
1tnguyen Apr 23, 2026
dca7c7a
Fixes and tests for nested control and adjoint modifiers (#4372)
1tnguyen Apr 23, 2026
9de9c62
[testing] Add more Python kernel lookup regression tests (#4382)
atgeller Apr 24, 2026
437e7a6
Skipping full Mottonen decomposition (#4384)
sacpis Apr 24, 2026
f368a6f
[Dynamics] Support custom time stepper injection (#4354)
1tnguyen Apr 24, 2026
736f4ef
[Documentation] Add documentation for the `--cudaq-full-stack-trace` …
1tnguyen Apr 24, 2026
0239c98
reduce per-PR workload (#4271)
mitchdz Apr 24, 2026
967402c
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 Apr 24, 2026
4b6bdb9
Migrate cudaq metapackage from setuptools to hatchling (#4364)
lmondada Apr 24, 2026
c47f54a
fix: review comments, add combine meas and other codegen passes to re…
TheGupta2012 Apr 24, 2026
13eff8f
[PTSBE] Expose noise channel and parameters on TraceInstruction (#4393)
taalexander Apr 24, 2026
90caa23
Add application hub launchable link to Applications page (#4231)
efratshabtai Apr 24, 2026
1099783
Replacing llvm type registry with our own (#4385)
Renaud-K Apr 24, 2026
a525bfb
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 Apr 27, 2026
4ebfad1
Update cmake constraint for wheel build (for upstream change) (#4396)
bmhowe23 Apr 27, 2026
8c94fd4
Merge lowerQuakeCode overloads (#4378)
lmondada Apr 27, 2026
cb0dd66
[NFC] Split BaseRemoteSimulator launch into compile + launch (#4387)
lmondada Apr 27, 2026
c938257
[NFC] Use std::span in remote client / argument-conversion APIs (#4397)
lmondada Apr 27, 2026
18e3a3b
Introduce QPU::compileModule, use it for launch + specialize (#4388)
lmondada Apr 27, 2026
56a5f86
update realtime NOTICE (#4400)
mitchdz Apr 27, 2026
2a04b79
Release the GIL during CUDA-Q compilation to enable Python signal han…
taalexander Apr 28, 2026
9ffeae6
[OpenQASM] Remove empty stubs from OpenQASM codegen (#4377)
1tnguyen Apr 28, 2026
501cca4
Add runtime tracer with spdlog and Chrome backends (#4389)
taalexander Apr 28, 2026
1529df7
[NFC] Update a comment (#4402)
schweitzpgi Apr 28, 2026
4bfcc64
[testing] Fix Infleqtion tests for state prep (#4323)
khalatepradnya Apr 28, 2026
23c01f9
[Publishing] Update mgpu Gitlab SHA (#4394)
1tnguyen Apr 28, 2026
733413f
Fix observe broadcast fallback on REST QPU targets (#4395)
zeel2104 Apr 29, 2026
a7178f0
Fix CuPy state initialization for strided device arrays and adjacent …
huaweil-nv Apr 29, 2026
33abdcc
[python] Add IonQ observe broadcast regression test (#4410)
splch Apr 29, 2026
b81421b
[cc] Measure handle type (#4403)
khalatepradnya Apr 29, 2026
0376c3d
remove python 3.10, add python 3.13 to docs (#4399)
mitchdz Apr 29, 2026
cb19eaa
Fixes a miscompile of cc.loop while-loop (#4412)
sacpis Apr 29, 2026
5c9a3c6
Restoring static linkage (#4417)
sacpis Apr 30, 2026
4a37651
Expose tracer to Python and wrap standard entry points (#4390)
taalexander Apr 30, 2026
d830e74
[NFC] Split out CompiledModule container into class (#4419)
lmondada Apr 30, 2026
ee3ea51
[opt][qir] Lower `!cc.measure_handle` through `ConvertToQIRAPI` (#4404)
khalatepradnya Apr 30, 2026
c90d001
Bump notebook from 7.5.2 to 7.5.6 (#4420)
dependabot[bot] Apr 30, 2026
73596a7
[NFC] Let's follow the coding conventions (#4422)
schweitzpgi May 1, 2026
9262e69
Merge branch 'main' into migrate-cudaq-v2
TheGupta2012 May 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .claude/skills/cudaq-guide/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ name: "cudaq-guide"
title: "Cuda Quantum"
description: "CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications."
version: "1.0.0"
author: "Sachin Pisal <spisal@nvidia.com>"
author: "CUDA-Q"
tags: [cuda-quantum, quantum-computing, onboarding, getting-started, nvidia]
tools: [Read, Glob, Grep, Bash]
license: "Apache License 2.0"
compatibility: "Python 3.10+, C++ 20"
metadata:
author: "Sachin Pisal <spisal@nvidia.com>"
author: "CUDA-Q"
tags:
- cuda-quantum
- quantum-computing
Expand Down
100 changes: 100 additions & 0 deletions .github/nv-slack-bot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
$schema: https://public.gha-runners.nvidia.com/nv-slack-bot/schemas/config-v1.json
enabled: true
notifications:
- name: "Publishing workflow failed"
event: workflow_run
slack:
nvidia:
channels:
- id: C0AT93CK1B9 # nvqpp-cudaq-notifications
match: workflow_run.name = "Publishing" and workflow_run.conclusion = "failure"
message:
body: |
<{{url}}|Publishing workflow> failed on `{{branch}}` (commit <{{commitUrl}}|{{sha}}>)
vars:
url: workflow_run.html_url
branch: workflow_run.head_branch
sha: $substring(workflow_run.head_sha, 0, 7)
commitUrl: workflow_run.head_repository.html_url & "/commit/" & workflow_run.head_sha
show_webhook_payload_on_error: false

- name: "Stable publishing workflow failed"
event: workflow_run
slack:
nvidia:
channels:
- id: C0AT93CK1B9 # nvqpp-cudaq-notifications
match: workflow_run.name = "Push stable release" and workflow_run.conclusion = "failure"
message:
body: |
<{{url}}|Push stable release workflow> failed on `{{branch}}` (commit <{{commitUrl}}|{{sha}}>)
vars:
url: workflow_run.html_url
branch: workflow_run.head_branch
sha: $substring(workflow_run.head_sha, 0, 7)
commitUrl: workflow_run.head_repository.html_url & "/commit/" & workflow_run.head_sha
show_webhook_payload_on_error: false

- name: "Deployments workflow failed"
event: workflow_run
slack:
nvidia:
channels:
- id: C0AT93CK1B9 # nvqpp-cudaq-notifications
match: workflow_run.name = "Deployments" and workflow_run.conclusion = "failure"
message:
body: |
<{{url}}|Deployments workflow> failed on `{{branch}}` (commit <{{commitUrl}}|{{sha}}>)
vars:
url: workflow_run.html_url
branch: workflow_run.head_branch
sha: $substring(workflow_run.head_sha, 0, 7)
commitUrl: workflow_run.head_repository.html_url & "/commit/" & workflow_run.head_sha
show_webhook_payload_on_error: false

- name: "Merge queue CI failed"
event: workflow_run
slack:
nvidia:
channels:
- id: C0AT93CK1B9 # nvqpp-cudaq-notifications
match: workflow_run.name = "CI" and workflow_run.event = "merge_group" and workflow_run.conclusion = "failure"
message:
body: |
<{{url}}|Merge queue CI> failed on `{{branch}}` (commit <{{commitUrl}}|{{sha}}>)
vars:
url: workflow_run.html_url
branch: workflow_run.head_branch
sha: $substring(workflow_run.head_sha, 0, 7)
commitUrl: workflow_run.head_repository.html_url & "/commit/" & workflow_run.head_sha
show_webhook_payload_on_error: false

- name: "Issue opened"
event: issues
slack:
nvidia:
channels:
- id: C0AT93CK1B9 # nvqpp-cudaq-notifications
match: action = "opened"
message:
body: |
New issue opened: <{{url}}|{{title}}>
vars:
url: issue.html_url
title: issue.title
show_webhook_payload_on_error: false

- name: "Stale issue (no update in over a week)"
event: repository_dispatch
slack:
nvidia:
channels:
- id: C0AT93CK1B9 # nvqpp-cudaq-notifications
match: action = "stale-issue"
message:
body: |
Issue has had no activity in over a week: <{{url}}|{{title}}>
vars:
url: client_payload.url
title: client_payload.title
show_webhook_payload_on_error: false
12 changes: 12 additions & 0 deletions .github/pre-commit/spelling_allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ Photonics
PyPI
Pygments
QAOA
QASM
QBRAID
QCI
QCaaS
QEC
Expand All @@ -128,6 +130,7 @@ QuTiP
Quake
Quantinuum
RDMA
REPL
RHEL
RPC
RSA
Expand Down Expand Up @@ -168,6 +171,7 @@ amongst
ancilla
ansatz
ansatzes
api
archiver
arity
auxillary
Expand Down Expand Up @@ -300,17 +304,20 @@ lossy
lvalue
macOS
makefiles
measurementCounts
merchantability
mps
multinomial
multithreaded
mutex
namespace
namespaces
nanobind
natively
normalization
nullary
nvcc
nvq
observables
optimizer
optimizers
Expand All @@ -332,21 +339,26 @@ preprocessor
probability
programmatically
pybind
qBraid
qaoa
qbraid
qed
qio
qrn
quantize
quantized
qubit
qubits
qudit
qudits
queryable
qumode
qumodes
reStructuredText
realtime
reconfigurable
reproducibility
resultData
reusability
runtime
runtimes
Expand Down
66 changes: 54 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ on:
export_environment:
type: boolean
description: Export the build environment as tar artifact that can be imported with Docker.
ci_level:
type: choice
description: 'CI tier: pr runs a reduced validation matrix, full runs everything.'
options:
- auto
- pr
- full
default: auto
# The GitHub application copy-pr-bot copies the source code for every pull request
# into the repository. Approving such upstream pushes effectively marks code as trusted,
# and is necessary to use the self-hosted NVIDIA runners.
Expand Down Expand Up @@ -40,6 +48,7 @@ jobs:
llvm_commit: ${{ steps.repo_info.outputs.llvm_commit }}
pybind11_commit: ${{ steps.repo_info.outputs.pybind11_commit }}
platform_config: ${{ steps.config.outputs.platforms }}
ci_tier: ${{ steps.ci_tier.outputs.tier }}

steps:
- name: Checkout repository
Expand Down Expand Up @@ -81,6 +90,22 @@ jobs:
echo "llvm_commit=$(git rev-parse @:./tpls/llvm)" >> $GITHUB_OUTPUT
echo "pybind11_commit=$(git rev-parse @:./tpls/pybind11)" >> $GITHUB_OUTPUT

- id: ci_tier
name: Determine CI tier
run: |
requested="${{ inputs.ci_level || 'auto' }}"
if [ "$requested" != "auto" ]; then
tier="$requested"
elif [ "${{ github.event_name }}" == "push" ]; then
# PR pushes (pull-request/NNN branches via copy-pr-bot) get reduced CI
tier="pr"
else
# merge_group, workflow_dispatch with default auto get full CI
tier="full"
fi
echo "tier=$tier" >> $GITHUB_OUTPUT
echo "CI tier: $tier"

devdeps:
name: Load dependencies
needs: metadata
Expand Down Expand Up @@ -138,6 +163,7 @@ jobs:
source_build:
name: Load source build cache
needs: metadata
if: needs.metadata.outputs.ci_tier != 'pr'
strategy:
matrix:
platform: [amd64, arm64]
Expand Down Expand Up @@ -192,7 +218,8 @@ jobs:
config_source_build:
name: Configure build (source_build)
runs-on: ubuntu-latest
needs: source_build
needs: [metadata, source_build]
if: needs.metadata.outputs.ci_tier != 'pr'
outputs:
json: "${{ steps.read_json.outputs.result }}"
steps:
Expand All @@ -203,17 +230,12 @@ jobs:

build_and_test:
name: Build and test
needs: config_devdeps
needs: [metadata, config_devdeps]
strategy:
matrix:
platform: [amd64, arm64]
toolchain: [clang16, gcc11, gcc12]
mpi: [openmpi]
exclude:
- toolchain: llvm
mpi: mpich
- toolchain: clang16
mpi: mpich
fail-fast: false
uses: ./.github/workflows/test_in_devenv.yml
with:
Expand All @@ -223,10 +245,16 @@ jobs:
devdeps_cache: ${{ fromJson(needs.config_devdeps.outputs.json).cache_key[format('{0}-{1}', matrix.platform, matrix.toolchain)] }}
devdeps_archive: ${{ fromJson(needs.config_devdeps.outputs.json).tar_archive[format('{0}-{1}', matrix.platform, matrix.toolchain)] }}
export_environment: ${{ github.event_name == 'workflow_dispatch' && inputs.export_environment }}
# PR tier fake-passes the arm64/gcc builds (expensive, redundant with amd64/gcc coverage).
# Computing skip_build from the 3 real matrix axes keeps the auto-generated job name as
# "Build and test (<platform>, <toolchain>, <mpi>) / ..." so branch-protection required
# check names match. Adding a 4th matrix key would leak into the name and break gating.
skip_build: ${{ needs.metadata.outputs.ci_tier == 'pr' && matrix.platform == 'arm64' && (matrix.toolchain == 'gcc11' || matrix.toolchain == 'gcc12') }}

gen_code_coverage:
name: Gen code coverage
needs: config_devdeps
needs: [metadata, config_devdeps]
if: needs.metadata.outputs.ci_tier != 'pr'
strategy:
matrix:
platform: [amd64]
Expand All @@ -242,9 +270,12 @@ jobs:
devdeps_archive: ${{ fromJson(needs.config_devdeps.outputs.json).tar_archive[format('{0}-{1}', matrix.platform, matrix.toolchain)] }}
export_environment: ${{ github.event_name == 'workflow_dispatch' && inputs.export_environment }}

# Docker images are packaging, not correctness. On PR tier this fake-passes
# (skip_build=true) so required checks remain green without doing the build;
# build_and_test covers code compilation and testing.
docker_image:
name: Create Docker images
needs: config_devdeps
needs: [metadata, config_devdeps]
strategy:
matrix:
platform: [amd64, arm64]
Expand All @@ -259,10 +290,11 @@ jobs:
devdeps_cache: ${{ fromJson(needs.config_devdeps.outputs.json).cache_key[format('{0}-gcc11', matrix.platform)] }}
devdeps_archive: ${{ fromJson(needs.config_devdeps.outputs.json).tar_archive[format('{0}-gcc11', matrix.platform)] }}
environment: ghcr-ci
skip_build: ${{ needs.metadata.outputs.ci_tier == 'pr' }}

python_wheels:
name: Create Python wheels
needs: config_wheeldeps
needs: [metadata, config_wheeldeps]
strategy:
matrix:
platform: [amd64, arm64]
Expand All @@ -280,20 +312,29 @@ jobs:
devdeps_image: ${{ fromJson(needs.config_wheeldeps.outputs.json).image_hash[format('{0}-cu{1}-python', matrix.platform, matrix.cuda_version)] }}
devdeps_cache: ${{ fromJson(needs.config_wheeldeps.outputs.json).cache_key[format('{0}-cu{1}-python', matrix.platform, matrix.cuda_version)] }}
devdeps_archive: ${{ fromJson(needs.config_wheeldeps.outputs.json).tar_archive[format('{0}-cu{1}-python', matrix.platform, matrix.cuda_version)] }}
skip_build: ${{ needs.metadata.outputs.ci_tier == 'pr' }}

python_metapackages:
name: Create Python metapackages
needs: python_wheels
needs: [metadata, python_wheels]
uses: ./.github/workflows/python_metapackages.yml
with:
cudaq_version: ${{ needs.python_wheels.outputs.cudaq_version }}
python_versions: "['3.11', '3.13']"
cuda_versions: "['', '12.6', '13.0']"
wheel_artifacts: 'pycudaq-*'
skip_build: ${{ needs.metadata.outputs.ci_tier == 'pr' }}

# Installer builds are packaging, not correctness. On PR tier this fake-passes
# (skip_build=true) so required checks report status; code correctness is
# validated by build_and_test.
binaries:
name: Create CUDA Quantum installer
needs: [metadata, config_source_build]
# Run even when config_source_build is skipped on PR tier. The child
# workflow guards all real build steps on !inputs.skip_build, so the
# unused build_cache input is fine.
if: ${{ always() && needs.metadata.result == 'success' }}
strategy:
matrix:
platform: [amd64, arm64]
Expand All @@ -308,7 +349,8 @@ jobs:
platform_base_image: ${{ fromJson(needs.metadata.outputs.platform_config)[format('{0}', matrix.platform)].minimal_base_image }}
build_config_id: cu${{ matrix.cuda_version }}-llvm
cuda_version: ${{ matrix.cuda_version }}
build_cache: ${{ fromJson(needs.config_source_build.outputs.json).build_cache[format('{0}-cu{1}-installer', matrix.platform, matrix.cuda_version)] }}
build_cache: ${{ needs.config_source_build.result == 'success' && fromJson(needs.config_source_build.outputs.json).build_cache[format('{0}-cu{1}-installer', matrix.platform, matrix.cuda_version)] || '' }}
skip_build: ${{ needs.metadata.outputs.ci_tier == 'pr' }}

clean_up:
name: Prepare cache clean-up
Expand Down
Loading