qnetbench.apps¶
The benchmark applications, the core/catalog split, and the registry that resolves a benchmark by name.
Narrative guide: Applications.
qnetbench.apps
¶
qnetbench.apps — benchmark applications.
The suite has two layers (the MQT Bench / SPEC model):
- a core of distinct protocols (
available_apps()), spanning every demand class, that CI, the reference corpus, and the cross-backend equivalence suite all iterate; - a catalog (
catalog_apps()) of 50+ parameterized instances — mostly DQC over a family of distributed circuits at a range of sizes — resolvable and runnable on demand (get_app,qnetbench run <name>), but not all baked into CI.
Every application is one file against the api and inherits characterization, a demand signature, and cross-backend equivalence for free.
AnonymousTransmission
¶
B92
¶
BB84
¶
BQC
¶
Source code in qnetbench/apps/bqc.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/bqc.py
ByzantineAgreement
¶
CHSH
¶
Source code in qnetbench/apps/chsh.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/chsh.py
ClockSync
¶
ClockSync(
rounds: int = 256,
offset: float = pi / 3,
min_fidelity: float = 0.8,
tolerance: float = 0.1,
)
Source code in qnetbench/apps/clock_sync.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/clock_sync.py
ConferenceKey
¶
Distillation
¶
Distillation(
rounds: int = 48,
control_rounds: int = 32,
min_fidelity: float = 0.5,
staleness_tolerance: float = 0.002,
)
Source code in qnetbench/apps/distillation.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/distillation.py
DistilledGate
¶
DistilledGate(
reps: int = 12,
bulk_min_fidelity: float = 0.5,
gate_min_fidelity: float = 0.9,
deadline_budget: float = 0.05,
)
Source code in qnetbench/apps/distilled_gate.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/distilled_gate.py
DistributedGate
¶
DQC
¶
DQC(
circuit: Circuit,
min_fidelity: float = 0.9,
layer_budget: float = 0.01,
)
A DQC benchmark for one (2-node) partitioned circuit.
Source code in qnetbench/apps/dqc.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/dqc.py
HeraldedTeleport
¶
HeraldedTeleport(
sessions: int = 24,
herald_prob: float = 0.4,
max_attempts: int = 12,
mean_idle: float = 0.02,
min_fidelity: float = 0.85,
)
Source code in qnetbench/apps/heralded_teleport.py
LeaderElection
¶
MultihopQKD
¶
ObliviousTransfer
¶
Source code in qnetbench/apps/oblivious_transfer.py
PositionVerification
¶
PositionVerification(
rounds: int = 48,
min_fidelity: float = 0.85,
response_budget: float = 0.01,
)
Source code in qnetbench/apps/position_verification.py
QKD
¶
Source code in qnetbench/apps/qkd.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/qkd.py
SecretSharing
¶
SharedRandomness
¶
Source code in qnetbench/apps/shared_randomness.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/shared_randomness.py
SixState
¶
EntanglementSwap
¶
Teleportation
¶
ThresholdSecretSharing
¶
VerifiedBQC
¶
Source code in qnetbench/apps/verified_bqc.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome
Source code in qnetbench/apps/verified_bqc.py
register_app
¶
register_app(
app: Application, *, replace: bool = False
) -> str
Add a benchmark instance to the catalog under its own name, and return that name.
Everything name-addressed then resolves it — get_app, run_once,
characterize_app, catalog_apps() — which is how a benchmark built at runtime
(typically DQC(circuit) over a circuit you loaded or generated) reaches the
harness without being baked into this module. The registration lives in the
importing process only; to expose one on the command line, add it to _CORE.
Source code in qnetbench/apps/__init__.py
available_apps
¶
Distributed quantum computing¶
The DQC application is the one that turns a circuit into demand; it is what the generated catalog is built from.
qnetbench.apps.dqc
¶
Distributed quantum computing (DQC): execute a partitioned circuit across nodes.
The demand comes from a real circuit, not a hand-set contract. Each node runs its slice: single-qubit and same-node two-qubit gates apply locally; every non-local two-qubit gate becomes a teleported gate — one entanglement request whose deadline is the gate's ASAP layer × a per-layer budget. So the trace's entanglement requests are the circuit's Entanglement Demand Schedule.
Demand signature: bursty and deadline-critical, with a shape set by the circuit (gate count, non-local fraction, depth). Library circuits are mirror circuits (U;U†), so a noiseless run returns every qubit to |0>; utility is the fraction of qubits measured 0, which degrades as teleported-gate fidelity drops.
DQC
¶
DQC(
circuit: Circuit,
min_fidelity: float = 0.9,
layer_budget: float = 0.01,
)
A DQC benchmark for one (2-node) partitioned circuit.
Source code in qnetbench/apps/dqc.py
run
¶
run(
host: Host, role: Role, cfg: dict[str, object]
) -> AppOutcome