Skip to content

IQM backend updates Q1-Q3 2026 - #5447

Open
iqm-bhoffmann wants to merge 19 commits into
NVIDIA:mainfrom
iqm-finland:iqm-backend-updates-q1-q3-2026
Open

iqm-bhoffmann wants to merge 19 commits into
NVIDIA:mainfrom
iqm-finland:iqm-backend-updates-q1-q3-2026

Conversation

@iqm-bhoffmann

Copy link
Copy Markdown
Contributor

Compilation of several features, updates, improvements, and bug fixes from the period Q1 to Q3 2026 concerning the IQM backend. Code should be reviewed best by going over the commits as they group the changes by topic. Going over the files is more difficult as the changesets are touching the same files from multiple changesets.

Changes are:

  • Updated the documentation concerning IQM backend and devices including examples.
  • Improved handling and output of some error cases.
  • Fixed starting the mock-server for python tests.
  • Extended the mock server with a 54-qubit crystal QPU and dynamic switching of the QPU, unusable qubits and TC.
  • Added a descriptive header to saved mapping files to allow easier identification of when and where the file was created.
  • Handling of QPUs for which the dynamic quantum architecture reports a split topology. Reasons for a split topology can be issues with cables, failed calibration and more. For such cases the largest contiguous network is identified and passed to the transpiler.
  • Dynamic frequency for polling the server for results.
  • Clearing of a map variable which leaked values from one test to another.
  • Switch to the IQM V1 REST API.
  • Saving the selected qubit mapping into the mapping files. This allows to correctly restore configurations saved to file for testing.
  • Changed result evaluation of some testcases so they can pass on the simulator.

iqm-bhoffmann and others added 16 commits January 20, 2026 23:45
Check for a split qubit topology and if multiple networks exist remove all but one. The network remaining is either the one with the most nodes or if there is a tie the one containing the qubit with the smallest index number. [SW-2176]
FIX Prevent crash when restoring a QPU quantum architecture from file without contacting a server.
FIX Allow IQM C++ tests to pass with simulators returning sparse counts.

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
FIX If the dynamic QA has fewer qubits than the static QA save the mapping between logical and physical qubits to the quantum architecture file. When loading such a file the mapping will be restored to ensure consistency with the adjacency map. [SW-2363]

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
CHG Switch to use the URLs of V1 API. [SW-2119]
CHG In V1 API the quantum computer is no longer specified in the base URL but separately. [SW-2119]
CHG Adapted the mock server to provide answers for V1 API requests. [SW-2119]
CHG Added automatic conversion of old cocos style URLs to new V1 API style URLs. [SW-2119]
CHG Changed implementation simulating bad qubits in the mock server. Allow configuration of bad qubits via environment.
CHG Updated documentation to V1 API. Explained how to specify the quantum computer. [SW-2119]
CHG Extended documentation with an overview of all configuration options.

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
FIX Stopped internally used map variable to grow unneccessarily with every submitted kernel. [SW-2506]
FIX Use all types and not only the default implementation from the dynamic quantum architecture (DQA). [SW-2412]
CHG Change the frequency of polling the status with the position in the queue. [SW-2402]
CHG Improved information in the debug output of the DQA algorithm.
CHG During polling reduce the output to only the status.

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
Check for a split qubit topology and if multiple networks exist remove all but one. The network remaining is either the one with the most nodes or if there is a tie the one containing the qubit with the smallest index number. [SW-2176]
Extend the IQM mock server to allow disabling qubits and transmons to test a split topology.
Start the local mock server only when nothing is set in IQM_SERVER_URL.

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
Due to changes of the central test scripts the IQM tests broke. Fixed import problems to make them run again.
Manually appended the source directory to the system path so tests can access shared utility functions.
Receive port number from the mock-qpu framework.

Signed-off-by: peihsuan.huang <peihsuan.huang@meetiqm.com>
FIX Corrected overwriting an existing mapping file. A problem introduced by removing the file exclusive requirement.
CHG Added information to the quantum architecture file about which calibration-set id was used for the dynamic quantum architecture.
CHG Updated the example quantum architecture files from IQM resonance system.
FIX Corrected returning an error message when a job has failed.
FIX Corrected once case in merging of sub-networks in the algorithm to detect a split topology. [SW-2176]

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
Added a test for the split topology algorithm. The tests are based on verified testvectors for the 20 qubit and 54 qubit architectures.
The mock server for IQM was extended to be configurable at runtime to support different configurations in the same testrun.
[IQM-SW-2740]

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Corrected calculation of the partial trace of the density matrix.
Suppress bitstrings for counts with only fractions of one shot. These are mainly rounding artifacts.
Applied yapf formatting suggestions.

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Merge branch 'main' of https://github.com/iqm-finland/cuda-quantum into iqm-backend-updates-q1-q3-2026

 Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Merge branch 'main' into iqm-backend-updates-q1-q3-2026
Adapted code from main for getting the circuit for the qubit ordering to the branch which is using the V1 API.
Fixed starting the mock server for the python tests. Now all tests work and the iqm ctests are also green.

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Updated documentation because of IQM domain change from "meetiqm.com" to "iqm.tech".
Rewrote descriptions how to use the IQM backend.
Updated the code examples for IQM to use ghz as algorithm.
Added example to documentation how to use the IQM backend.
Removed lines with IQM copyright messages.

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Changed startup configuration of the local IQM mock-server. Now all qubits are available by default [IQM-SW-3087]
Changed ctest to execute the split-topology test only on IQM mock-server. [IQM-SW-3071]
Changed ctest to not use the outdated IQM_TOKENS_FILE anymore. [IQM-SW-3088]
Updated mapping file examples for IQM Resonance machines. [IQM-SW-2585]
Added quotes around parameter names in documentation [IQM-SW-2585]
Applied lint suggestions.

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Fixed handling of server response in case of an error. The handling was not updated to V1 API and was checking for a no longer existing field. [IQM-SW-3101]

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
Merge branch 'main' into iqm-backend-updates-q1-q3-2026

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
@copy-pr-bot

copy-pr-bot Bot commented Sep 16, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions github-actions Bot added documentation Improvements or additions to documentation runtime CUDA quantum runtime python-lang Anything related to the Python CUDA Quantum language implementation labels Sep 16, 2026
@sacpis

sacpis commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Thanks @iqm-bhoffmann. Would you be able to sign the commits?
https://github.com/NVIDIA/cuda-quantum/pull/5447/checks?check_run_id=104867317945

@sacpis

sacpis commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

/ok to test 3b3fa14

Command Bot: Processing...

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown

CI Summary (push) — ❌ failed

Run #35366387330 · ✅ 6 · ⏩ 8 · ❌ 1 · ⛔ 0

❌ Failed or cancelled
Job Result Link
build_and_test ❌ failure view
Top-level jobs (15)
Job Result
binaries ⏩ skipped
build_and_test ❌ failure
changes ✅ success
config_devdeps ✅ success
config_source_build ⏩ skipped
config_wheeldeps ✅ success
devdeps ✅ success
docker_image ⏩ skipped
gen_code_coverage ⏩ skipped
metadata ✅ success
python_devel_wheel ⏩ skipped
python_metapackages ⏩ skipped
python_wheels ⏩ skipped
source_build ⏩ skipped
wheeldeps ✅ success
⏩ Skipped jobs (8) — intentionally skipped on PR builds; run on merge_group / workflow_dispatch
Job
binaries
config_source_build
docker_image
gen_code_coverage
python_devel_wheel
python_metapackages
python_wheels
source_build
All sub-jobs (44) — every matrix leg, with links
Job Status Link
Build and test (amd64, gcc12, openmpi) / Dev environment (Debug) ❌ failure view
Build and test (amd64, gcc12, openmpi) / Dev environment (Python) ✅ success view
Build and test (amd64, llvm, openmpi) / Dev environment (Debug) ❌ failure view
Build and test (amd64, llvm, openmpi) / Dev environment (Python) ✅ success view
Build and test (arm64, llvm, openmpi) / Dev environment (Debug) ❌ failure view
Build and test (arm64, llvm, openmpi) / Dev environment (Python) ✅ success view
CI Summary ❔ in_progress view
Check for stable CUDA-Q changes ✅ success view
Configure build (devdeps) ✅ success view
Configure build (source_build) ⏩ skipped view
Configure build (wheeldeps) ✅ success view
Create CUDA Quantum installer ⏩ skipped view
Create Docker images ⏩ skipped view
Create Python metapackages ⏩ skipped view
Create Python wheels ⏩ skipped view
Create shared Python development wheel ⏩ skipped view
Gen code coverage ⏩ skipped view
Load dependencies (amd64, gcc12) / Caching ✅ success view
Load dependencies (amd64, gcc12) / Finalize ✅ success view
Load dependencies (amd64, gcc12) / Metadata ✅ success view
Load dependencies (amd64, llvm) / Caching ✅ success view
Load dependencies (amd64, llvm) / Finalize ✅ success view
Load dependencies (amd64, llvm) / Metadata ✅ success view
Load dependencies (arm64, gcc12) / Caching ✅ success view
Load dependencies (arm64, gcc12) / Finalize ✅ success view
Load dependencies (arm64, gcc12) / Metadata ✅ success view
Load dependencies (arm64, llvm) / Caching ✅ success view
Load dependencies (arm64, llvm) / Finalize ✅ success view
Load dependencies (arm64, llvm) / Metadata ✅ success view
Load source build cache ⏩ skipped view
Load wheel dependencies (amd64, 12.6) / Caching ✅ success view
Load wheel dependencies (amd64, 12.6) / Finalize ✅ success view
Load wheel dependencies (amd64, 12.6) / Metadata ✅ success view
Load wheel dependencies (amd64, 13.0) / Caching ✅ success view
Load wheel dependencies (amd64, 13.0) / Finalize ✅ success view
Load wheel dependencies (amd64, 13.0) / Metadata ✅ success view
Load wheel dependencies (arm64, 12.6) / Caching ✅ success view
Load wheel dependencies (arm64, 12.6) / Finalize ✅ success view
Load wheel dependencies (arm64, 12.6) / Metadata ✅ success view
Load wheel dependencies (arm64, 13.0) / Caching ✅ success view
Load wheel dependencies (arm64, 13.0) / Finalize ✅ success view
Load wheel dependencies (arm64, 13.0) / Metadata ✅ success view
Prepare cache clean-up ❔ in_progress view
Retrieve PR info ✅ success view
⚠️ Required checks (3/6) — 3 missing — declared in .github/required-checks.yml for push
Required check Status Link
Build and test (amd64, llvm, openmpi) / Dev environment (Debug) ❌ failure view
Build and test (amd64, llvm, openmpi) / Dev environment (Python) ✅ success view
Build and test (arm64, llvm, openmpi) / Dev environment (Debug) ❌ failure view
Build and test (arm64, llvm, openmpi) / Dev environment (Python) ✅ success view
Build and test (amd64, gcc12, openmpi) / Dev environment (Debug) ❌ failure view
Build and test (amd64, gcc12, openmpi) / Dev environment (Python) ✅ success view

@iqm-bhoffmann

Copy link
Copy Markdown
Contributor Author

Thanks @iqm-bhoffmann. Would you be able to sign the commits? https://github.com/NVIDIA/cuda-quantum/pull/5447/checks?check_run_id=104867317945

Hello @sacpis ,
I was quite sure that all published commits were signed by me. But now I see that the first commit in the series where I merged a feature branch into this delivery branch seems to miss the signing. Possibly because it was created with a manual merge. Sorry for that.
Tomorrow I will sit together with my colleague Pei to fix this with remediation commits.

There is another check failing: https://github.com/NVIDIA/cuda-quantum/actions/runs/35117731906
The license header check complains about my new created test pattern files in unittests/nvqpp/backends/iqm/.
These files are used as testvectors by one of the ctest scripts. They contain text but are no sources. How could this be handled? Is there for example an ignore list?

qpeihsuanhuang and others added 2 commits September 17, 2026 15:31
I, Pei-Hsuan Huang <peihsuan.huang@meetiqm.com>, hereby add my Signed-off-by to this commit: 34ed30f

Signed-off-by: Pei-Hsuan Huang <peihsuan.huang@meetiqm.com>
I, Bernd Hoffmann <bernd.hoffmann@meetiqm.com>, hereby add my Signed-off-by to this commit: 41408f1

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
@sacpis

sacpis commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

/ok to test e798926

Command Bot: Processing...

@sacpis

sacpis commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Thanks @iqm-bhoffmann. Would you be able to sign the commits? https://github.com/NVIDIA/cuda-quantum/pull/5447/checks?check_run_id=104867317945

Hello @sacpis , I was quite sure that all published commits were signed by me. But now I see that the first commit in the series where I merged a feature branch into this delivery branch seems to miss the signing. Possibly because it was created with a manual merge. Sorry for that. Tomorrow I will sit together with my colleague Pei to fix this with remediation commits.

Thanks @iqm-bhoffmann. I see few commits are left to be signed.
https://github.com/NVIDIA/cuda-quantum/pull/5447/checks?check_run_id=105229535848

There is another check failing: https://github.com/NVIDIA/cuda-quantum/actions/runs/35117731906 The license header check complains about my new created test pattern files in unittests/nvqpp/backends/iqm/. These files are used as testvectors by one of the ctest scripts. They contain text but are no sources. How could this be handled? Is there for example an ignore list?

Please add - 'unittests/nvqpp/backends/iqm/*.txt.in' to .licenserc.yaml.

Ignore IQM testvector data files located in `unittests/nvqpp/backends/iqm/` in the license header check.

Signed-off-by: iqm-bhoffmann <bernd.hoffmann@iqm.tech>
@github-actions github-actions Bot added the CI Anything related to CI label Sep 18, 2026
@sacpis

sacpis commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

/ok to test 1a9f118

Command Bot: Processing...

@sacpis

sacpis commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

Just FYI, I see this

Bernd Hoffmann <[bernd.hoffmann@meetiqm.com](mailto:bernd.hoffmann@meetiqm.com)>
DCO Remediation Commit for Bernd Hoffmann <bernd.hoffmann@meetiqm.com>

I, Bernd Hoffmann <bernd.hoffmann@meetiqm.com>, hereby add my Signed-off-by to this commit: 41408f1b673af243b2d86509918d31de0fdc1cd8

Signed-off-by: Bernd Hoffmann <bernd.hoffmann@meetiqm.com>
Pei-Hsuan Huang <[peihsuan.huang@meetiqm.com](mailto:peihsuan.huang@meetiqm.com)>
DCO Remediation Commit for Pei-Hsuan Huang <peihsuan.huang@meetiqm.com>

I, Pei-Hsuan Huang <peihsuan.huang@meetiqm.com>, hereby add my Signed-off-by to this commit: 34ed30ffb5de74e75637b06b3ca48dafdefa79f4

Signed-off-by: Pei-Hsuan Huang <peihsuan.huang@meetiqm.com>
peihsuan.huang <[peihsuan.huang@meetiqm.com](mailto:peihsuan.huang@meetiqm.com)>
DCO Remediation Commit for peihsuan.huang <peihsuan.huang@meetiqm.com>

I, peihsuan.huang <peihsuan.huang@meetiqm.com>, hereby add my Signed-off-by to this commit: 4f41935ca1e777b9f14a8b474ed610a2e59c0175

Signed-off-by: peihsuan.huang <peihsuan.huang@meetiqm.com>
Please note: You should avoid adding empty commits (i.e., git commit -s --allow-empty), because these will be discarded if someone rebases the branch / repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI Anything related to CI documentation Improvements or additions to documentation python-lang Anything related to the Python CUDA Quantum language implementation runtime CUDA quantum runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants