Skip to content

✨ Add multi-program jobs - #509

Open
burgholzer wants to merge 7 commits into
codex/program-format-capabilitiesfrom
codex/multi-program-jobs
Open

✨ Add multi-program jobs#509
burgholzer wants to merge 7 commits into
codex/program-format-capabilitiesfrom
codex/multi-program-jobs

Conversation

@burgholzer

@burgholzer burgholzer commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

🤖 AI text below 🤖

Description

This PR brings ordered multi-program jobs to QDMI v1. It is based directly on
#508 and uses the exact QDMI_Program_Format descriptor introduced there. It
replaces the removed batch pseudo-format with a job-level program list.

The contract is deliberately small:

  • QDMI_job_set_programs and its device-side counterpart atomically copy an
    ordered program list in one exact format.
  • One shot count, status, job ID, wait, cancellation, and failure state apply to
    the complete list.
  • Result index i corresponds to input program i; execution order is not
    specified.
  • QDMI_JOB_PROPERTY_PROGRAMSNUM exposes the result count, including for jobs
    retrieved by ID.
  • QDMI_job_get_results and QDMI_device_job_get_results take a zero-based
    program index. Index zero is the single-program path.
  • The existing PROGRAM parameter remains the single-program setter and
    replaces a list with one program. Failed setters leave the prior state
    unchanged.

The implementation does not add per-program formats, shots, options, status,
cancellation, partial results, or a maximum-program-count property. Those need a
concrete provider requirement before they become part of QDMI.

Local validation passes:

  • release build, including prefixed symbol and device-template targets
  • all 108 configured CTests; 19 read-only cases skip as expected
  • strict C11 and C++20 public-header syntax checks
  • qdmi-docs (with the existing obsolete Doxygen-tag warning)
  • uvx prek run -a

Checklist

  • The pull request only contains commits that are focused and relevant to this change.
  • I have added appropriate tests that cover the new/changed functionality.
  • I have updated the documentation to reflect these changes.
  • I have added entries to the changelog for any noteworthy additions, changes, fixes, or removals.
  • I have added migration instructions to the upgrade guide (if needed).
  • The changes follow the project's style guidelines and introduce no new warnings.
  • The changes are fully tested and pass the CI checks.
  • I have reviewed my own code changes.

If PR contains AI-assisted content:

  • I have disclosed the use of AI tools in the PR description as per our AI Usage Guidelines.
  • AI-assisted commits include an Assisted-by: [Model Name] via [Tool Name] footer.
  • I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.

@burgholzer burgholzer added minor Changes that warrant a minor version release feature New feature or feature request labels Aug 23, 2026
@burgholzer burgholzer self-assigned this Aug 23, 2026
@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://Munich-Quantum-Software-Stack.github.io/QDMI/pr-preview/pr-509/

Built to branch gh-pages at 2026-08-24 12:44 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from 12be7d7 to 50ed628 Compare August 23, 2026 19:58
@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.40000% with 7 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
examples/device/src/cxx_device.cpp 94.0% 7 Missing ⚠️

Impacted file tree graph

@@                         Coverage Diff                         @@
##           codex/program-format-capabilities    #509     +/-   ##
===================================================================
- Coverage                               91.1%   90.9%   -0.2%     
===================================================================
  Files                                      7       7             
  Lines                                    800     861     +61     
  Branches                                 164     181     +17     
===================================================================
+ Hits                                     729     783     +54     
- Misses                                    71      78      +7     
Flag Coverage Δ
cpp 90.9% <94.4%> (-0.2%) ⬇️
Files with missing lines Coverage Δ
examples/driver/qdmi_example_driver.cpp 93.5% <100.0%> (+0.1%) ⬆️
include/qdmi/constants.h 100.0% <ø> (ø)
examples/device/src/cxx_device.cpp 93.8% <94.0%> (-0.9%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@burgholzer burgholzer added this to the v1.4.0 milestone Aug 23, 2026
Assisted-by: GPT-5.6 Sol via Codex
@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from 50ed628 to 99ad870 Compare August 23, 2026 20:04
Add atomic ordered program lists, indexed result retrieval, aggregate lifecycle semantics, and exact legacy-setter behavior.

Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Bring the complete QDMI #508 custom enum range into the multi-program job stack.

Assisted-by: GPT-5.6 Sol via Codex
Give clang-tidy the standalone device test compilation command and use NUL-terminated storage for text-program fixtures.

Assisted-by: GPT-5.6 Sol via Codex
Carry the focused Clang analyzer suppressions from the program-format PR into the multi-program stack.

Assisted-by: GPT-5.6 Sol via Codex

# Conflicts:
#	test/test_qdmi.cpp
@burgholzer
burgholzer changed the base branch from develop to codex/program-format-capabilities August 24, 2026 10:39
@burgholzer burgholzer changed the title ✨ Add multi-program jobs ✨ Add multi-program jobs and a replaceable Client-driver ABI Aug 24, 2026
@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from f469df0 to 8ced3f4 Compare August 24, 2026 10:59
@burgholzer burgholzer changed the title ✨ Add multi-program jobs and a replaceable Client-driver ABI ✨ Add multi-program jobs Aug 24, 2026

@burgholzer burgholzer left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is looking fine as well with the exception of one point that may need further addressing.

Comment thread include/qdmi/constants.h
Remove the legacy client and device program parameters so count-one and multi-program jobs use the same atomic setter. Update the examples, tests, migration guide, and Yannick Stade attribution.

Assisted-by: GPT-5.6 Sol via Codex
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or feature request minor Changes that warrant a minor version release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant