Skip to main content

Clifft - fast exact simulator for near-Clifford quantum circuits

Project description

Clifft

Unitary Foundation Docs arXiv License Discord Chat

PyPI version Downloads CI codecov Contributor Covenant

Clifft is a fast exact simulator for near-Clifford quantum circuits.

Built and maintained by the Unitary Foundation.

Clifft accepts Stim-format circuits, extends them with non-Clifford gates, and compiles them into bytecode executed by a high-performance Schrödinger Virtual Machine. It is designed for circuits whose dominant structure is Clifford, but whose behavior depends on localized non-Clifford operations.

The main simulation cost scales with the active dimension k of the dense state vector, rather than directly with the total number of physical qubits n. Non-Clifford operations can increase k, while measurements can reduce it.

Why Clifft?

  • Stim-compatible format and API: parse Stim-format circuits with noise, detectors, observables, and repeat blocks, plus non-Clifford extensions.
  • Exact near-Clifford simulation: simulate localized non-Clifford effects without approximating the quantum state.
  • Optimizing compiler pipeline: compile once, then sample many shots with HIR and bytecode optimization passes.
  • Active-dimension scaling: for low-magic circuits, runtime and memory scale with the localized active state rather than the full Hilbert space.

For QEC workflows, Clifft also supports detector-based post-selection, survivor sampling, and stratified importance sampling for rare-event estimation.

Installation

pip install clifft
Platform / CPU family PyPI wheel
Linux x86_64 with AVX2 Supported
Linux aarch64 Supported
macOS arm64 Supported
Windows amd64 Supported

All other platforms and CPU families should build from source. See the installation docs.

Quick Start

import clifft

program = clifft.compile("""
    H 0
    CNOT 0 1
    T 2
    M 0 1 2
""")

result = clifft.sample(program, shots=1000, seed=42)
print(result.measurements[:5])

For more details and examples, check out the documentation or take Clifft for a spin in the web-based interactive playground.

Front-End Integrations

Clifft's native API accepts Stim-compatible circuit text. If your workflow starts in another circuit framework, companion packages make the supported path discoverable:

  • Qiskit: clifft-qiskit provides a Qiskit BackendV2 provider for running supported QuantumCircuit instances on Clifft.
  • Cirq: clifft-cirq converts parameter-resolved cirq.Circuit instances to Clifft text and provides a Cirq-style sampler backed by Clifft.

See the front-end integrations guide for installation commands, minimal examples, and current limitations.

Performance

Clifft is designed for near-Clifford circuits where non-Clifford activity remains localized. In this regime, the dominant cost scales with the peak active dimension k, not directly with the total number of physical qubits.

Regime Representative benchmark What the results show
Pure Clifford QEC Surface code d=7, r=7 ▶↗ Stim remains the right tool; Clifft is roughly 10× slower while preserving the same sampling-oriented workflow.
Low-magic FT circuits MSC d=3 cultivation ▶↗ Clifft reaches 10.4M shots/s, about 370× faster than Tsim on this benchmark.
Larger near-Clifford FT circuits MSC d=5 cultivation ▶↗ Clifft reaches ~135K shots/s on one CPU core, about 13× faster than SOFT at ~10.6K shots/s on one H800 GPU.
Dense universal circuits Quantum Volume In the worst-case dense limit, Clifft remains neck-and-neck with simulators like qiskit-aer and qsim.

Throughput numbers above were measured on cloud instances; the links to the in-browser WASM playground will report lower throughput.

For benchmark details, plots, hardware notes, and guidance on when Clifft is a good fit, see the performance section of the documentation.

The full methodology and scientific results are described in the Clifft paper and companion clifft-paper repo.

Citation

If you use Clifft in your work, please cite the arXiv preprint below.

@misc{chase2026clifftfastexactsimulation,
      title={Clifft: Fast Exact Simulation of Near-Clifford Quantum Circuits},
      author={Bradley A. Chase and Farrokh Labib},
      year={2026},
      eprint={2604.27058},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      url={https://arxiv.org/abs/2604.27058},
}

Development

See the building from source guide for build instructions.

AI Acknowledgement

We used generative AI tools during parts of the research, software-development, and writing workflow for this project. These tools assisted with code generation and review, implementation analysis, documentation editing, and checks of selected derivations or arguments. All substantive design, validation, and release decisions were made by the human contributors.

Funding

This work was supported by the U.S. Department of Energy, Office of Science, Office of Advanced Scientific Computing Research, Accelerated Research in Quantum Computing under Award Number DE-SC0025336.

This material is also based upon work supported by the U.S. Department of Energy, Office of Science, National Quantum Information Science Research Centers, Quantum Science Center.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clifft-0.6.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

clifft-0.6.0-cp312-abi3-win_amd64.whl (384.4 kB view details)

Uploaded CPython 3.12+Windows x86-64

clifft-0.6.0-cp312-abi3-manylinux_2_28_x86_64.whl (726.4 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ x86-64

clifft-0.6.0-cp312-abi3-manylinux_2_28_aarch64.whl (600.1 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ ARM64

clifft-0.6.0-cp312-abi3-macosx_14_0_arm64.whl (604.1 kB view details)

Uploaded CPython 3.12+macOS 14.0+ ARM64

File details

Details for the file clifft-0.6.0.tar.gz.

File metadata

  • Download URL: clifft-0.6.0.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clifft-0.6.0.tar.gz
Algorithm Hash digest
SHA256 78c78c0777fad35b5af87170a65662ebda06620967df7a6d704d8d152bb2d583
MD5 120fec8832ebbeeb9445b3093bb08a57
BLAKE2b-256 7da38355d4afb39831a3a906d4f57fc299452d9d90faae8fedd5ebc29ec5d7e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft-0.6.0.tar.gz:

Publisher: release.yml on unitaryfoundation/clifft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clifft-0.6.0-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: clifft-0.6.0-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 384.4 kB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clifft-0.6.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7a058460a68a7b3748f45811d86c4c6c6dcac7280a7338733a845a057820d4dd
MD5 8f96e470321dba989b6c81c06ee8f464
BLAKE2b-256 99842c95c73cbace9d561a3f67e9d9b08f89df7e92609ea2041618ae84fd807b

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft-0.6.0-cp312-abi3-win_amd64.whl:

Publisher: release.yml on unitaryfoundation/clifft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clifft-0.6.0-cp312-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for clifft-0.6.0-cp312-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e46f4c38ab1945906772e68c33decb3b0dce8a953a9d5c6a401c42604f463757
MD5 96c15fcd60bbf5dba385a4a5ecee4b95
BLAKE2b-256 5c050015f70af403a9e9dd50dc79cb9e085f21fbc185e129c84aeb81c204f3aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft-0.6.0-cp312-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on unitaryfoundation/clifft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clifft-0.6.0-cp312-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for clifft-0.6.0-cp312-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 25a81255506fe53344f36ba802b09e421b4a6f283b1900c322e69bd59d59f9c9
MD5 c35473d9db72aa56d1181d7c1d69f3e7
BLAKE2b-256 3122e2caac4bc49830ba823c2bcc27802a62ccb29b9e0fb3a224ba5d220c3ff6

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft-0.6.0-cp312-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on unitaryfoundation/clifft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clifft-0.6.0-cp312-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for clifft-0.6.0-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6cf322b5d0f6e58efd00c8b1afc62a09c868fbe7fc4303b32056fa759f827ec8
MD5 25bbe986477d68c997e959b4db6122c4
BLAKE2b-256 24985391506ad4e45c767e85cdee984110d15de7e1f9eec06a6198771267e382

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft-0.6.0-cp312-abi3-macosx_14_0_arm64.whl:

Publisher: release.yml on unitaryfoundation/clifft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page