wai-quantum: pulse programs simulated under a Lindblad master equation, the same bits everywhere, their receipts binding the calibrations #551
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/quantum-pulse"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pulse programs now run as simulations: OpenPulse calibrations are read into a schedule on frames, simulated under a Lindblad master equation with a stated error bound, and run as jobs whose receipts bind the program, its calibrations, the device and the integrator. The result is the same bits on every platform. This adds no hardware pulse access.
What it adds
The OpenPulse reader (
qasm::pulse, on the OpenQASM 3 reader)calanddefcalon physical qubits, with ports (d0,m0,a0, or mapped inpulse.ports) and frames with times of their own.constant,gaussian,sech,gaussian_square,drag,sine, and explicit samples.play,delay,shift_phase,set_phase,shift_frequency,set_frequency,capture(andcapture_v0..v4), and barriers.dt.Q453–Q462, added afterQ452with nothing renumbered, each with its line and column.The simulator (
quantum_pulse, inquantum_engineandfull)+ − × ÷,sqrtand the repository's deterministic trigonometry.J041).Jobs (
engine::pulse, methodpulse)pulse.qubits, else from a target's calibration snapshot, else from defaults, and the result says which.pulse.calibration: digests of the program, its calibrations, the schedule and the device, plus the target's name, hash and calibration id;pulse.integrator: the integrator and its step;pulse.density_hash: the final state's bits.engine::pulse::checkre-runs a sealed job and names every field that differs.J040andJ041.Surfaces
run --method pulse --pulse OPTIONS(andplan),pulse schedule(a timeline per frame), andpulse check.pulse_scheduleandpulse_check. The run tools gain the methodpulseand thepulseoptions./v1/jobsand/v1/run. New routesPOST /v1/pulse/scheduleand/v1/pulse/check, with OpenAPI entries.QuantumEngine.pulse.pulsecommand.docs/pulse.md, plus the READMEs (engine and CLI with their zh-CN pages, the service and the Studio), the feature matrix and the changelog.Bounds on the service
MAX_DIM).Checked
--features full --lib: 1087 passed. The pulse workflow's job, replayed: 26 passed; three feature sets clean under-D warnings. Service:mcp::14 passed, then the full suite 37 + 1. CLI: 70 passed (bin), every target passed. wai-webquantum_engine::: 27 passed.smoke.shpassed.check_schemas.py: 42 tool answers valid. Breaking gate: no unacknowledged break. Repository checks: all 10 lines ok.check_docs.pyondocs/pulse.md: every block passed.studio.test.mjsrun twice: 246 checks passed, none failed. Desktop: 15 passed.4902e6679(macOS build host)build-views --checkpassed after the views page was rebuilt (see below).studio.test.mjsrun twice: every check passed. Desktop: 18 passed (17 pluspulse), clippy clean,checkok.The views page. The pulse pane changed
studio.css, which the views page is built from, so the page was rebuilt (3f2f4d9ce) withwai/wai-quantum-views/build.shincatthehacker/ubuntu:act-22.04with Rust 1.98.0, as the views workflow rebuilds it. A macOS build gives the same script and styles but other engine bytes, so it was not used. The engine inside the page is rebuilt from the current sources as well. The copy on main held an older one, which #549's views job warned of.The same density digest came out on x86_64 Linux, arm64 macOS, wasip2 and wasm32.
Not checked by hand: the new workflow's
bitslegs on the arm64 Linux and macOS runners were replayed on the macOS host only. This PR's CI is their first run on the forge runners.Not done
pulse_checkin the Python package and the editors.Breaking
api:rust:wai_quantum::engine::schema::FILESgrew from 22 to 23 (pulse.v1.json). The changelog acknowledges it.🤖 Generated with Claude Code