Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mitiq-knitting

Framework-agnostic circuit knitting for Mitiq

Circuit knitting (wire cutting) enables execution of quantum circuits that are wider than the available hardware. A circuit is decomposed at specified wire locations into smaller subcircuit variants via quasiprobability decomposition (QPD), executed independently, and classically recombined to recover the original expectation value.

mitiq-knitting follows the same API conventions as existing Mitiq techniques (ZNE, PEC, DDD):

from mitiq_knitting import execute_with_knitting

result = execute_with_knitting(
    circuit,
    executor,
    max_subcircuit_width=3,   # auto-find cuts
)

Features

  • execute_with_knitting() — high-level API matching execute_with_zne()
  • mitigate_executor() / knitting_decorator() — executor wrappers
  • find_wire_cuts() — automatic cut location discovery
  • cut_circuit() — QPD into subcircuit variants (8 terms per cut)
  • split_circuit() — physical splitting into smaller fragments
  • recombine_results() — classical expectation value reconstruction

Installation

pip install -e ".[dev]"

Requires Python >= 3.10, Mitiq >= 0.40, Cirq >= 1.3.

Quick start

import cirq
from mitiq_knitting import execute_with_knitting, CutLocation

q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(cirq.H(q0), cirq.CNOT(q0, q1))

def executor(c):
    sim = cirq.DensityMatrixSimulator()
    rho = sim.simulate(c).final_density_matrix
    return float(rho[0, 0].real)

result = execute_with_knitting(
    circuit, executor,
    cut_locations=[CutLocation(qubit=q0, moment_index=0)],
)

See examples/demo_6qubit.py for a full 6-qubit circuit executed via 3-qubit fragments.

Tests

pytest mitiq_knitting/tests/ -v

49 tests covering QPD correctness, density matrix reconstruction, API contracts, edge cases, and input validation.

How it works

Each wire cut replaces the identity channel with an 8-term QPD: 6 Pauli eigenstate projectors and 2 correction terms.

Subcircuit variants contain non-unitary Kraus channels and require a density-matrix simulator (e.g. cirq.DensityMatrixSimulator).

The sampling overhead scales as 8^n for n cuts (this implementation). The optimal decomposition with mid-circuit measurement achieves 4^n (Peng et al., 2020).

References

  • T. Peng et al., "Simulating Large Quantum Circuits on a Small Quantum Computer", PRL 125, 150504 (2020)
  • K. Mitarai & K. Fujii, "Constructing a virtual two-qubit gate...", PRResearch 3, 033167 (2021)
  • W. Tang et al., "CutQC", ASPLOS (2021)

License

GPL-3.0-or-later

About

Framework-agnostic circuit knitting (wire cutting) for Mitiq

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages