All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 1m26s
wai-quantum service / does this change touch it (pull_request) Successful in 31s
wai-quantum service / service · linux (pull_request) Successful in 49s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 4m2s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 9m51s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 9m16s
wai-quantum service / service · macos (pull_request) Successful in 47s
A Clifford circuit followed, on each qubit, by one-qubit gates at any angles (qasm::Program::product_measured splits it: each qubit's gates from its first non-Clifford one on, multiplied into one matrix; a gate on several qubits after that is refused). The planner takes the graph form, searches orders for narrower cuts with a move budget of about a second, and admits the job by its largest table (double precision when it fits, single otherwise) and by the entries its passes touch. The run rebuilds the same order. Answers: counts, exact samples; amplitudes, exact up to one phase shared by the job's amplitudes, which the result's global_phase says (a tableau does not fix a state's global phase). Expectation values are refused. auto tries it for counts after the state vectors and before mps. Tests: amplitudes equal the state vector's times one phase (6, 9 and 11 qubits, 24 amplitudes each); counts follow the exact distribution (40 000 shots) and repeat with their seed; auto samples a 40-qubit ring with chords by cutrank; refusals name the gate. Mutants caught: the tail multiplied in the wrong order, samples mapped to the wrong qubits. smoke.sh samples a 60-qubit instance (max cut 10 bits). Co-Authored-By: Claude Opus 5.5 <[email protected]>
27 lines
1.4 KiB
TOML
27 lines
1.4 KiB
TOML
[package]
|
|
name = "wai-quantum-service"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "Apache-2.0"
|
|
description = "The WAI quantum stack as a public job service: OpenQASM 3 circuits run by the strongest method each admits (bit-exact and exact state vectors, stabilizer tableaux, matrix product states, sparse Pauli dynamics), every result naming its method and its accuracy and sealed with the service's key; each job in its own process, inside a memory budget."
|
|
repository = "https://git.transaction.science/Transaction-Science/open-standards"
|
|
publish = false
|
|
|
|
[dependencies]
|
|
axum = "0.8"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "process", "time", "sync", "net", "io-util"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
# float_roundtrip: a number a client sends back reads as the double it was
|
|
# (the default reader rounds twice), so its receipt still verifies.
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
blake3 = "1"
|
|
getrandom = "0.4"
|
|
wai-quantum = { path = "../wai-quantum", default-features = false, features = ["quantum", "quantum_toolchain", "quantum_receipt", "quantum_sv", "quantum_tn", "quantum_tableau", "quantum_cutrank", "quantum_mpsim", "quantum_spd", "quantum_noisy", "quantum_sv_metal"] }
|
|
|
|
# proc_pid_rusage and waitid, for each job's energy (src/energy.rs).
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
libc = "0.2"
|
|
|
|
[profile.release]
|
|
lto = "thin"
|