Skip to main content

Unitary Compiler Collection: A quantum circuit interface and compiler for multiple quantum frameworks

Reason this release was yanked:

Erroneous files in build

Project description

ucc: Unitary Compiler Collection

Repository Unitary Foundation Discord Chat

The Unitary Compiler Collection (UCC) is a Python library for frontend-agnostic, high performance compilation of quantum circuits.

UCC interfaces automatically with multiple quantum computing frameworks, including Qiskit, Cirq, and PyTKET and supports programs in OpenQASM 2 and OpenQASM 3. For a full list of the latest supported interfaces, just call ucc.supported_formats.

Want to know more?

  • Check out our documentation, which you can build locally after installation by running make html in ucc/docs/source.
  • For code, repo, or theory questions, especially those requiring more detailed responses, submit a Discussion.
  • For casual or time sensitive questions, chat with us on Discord.

Quickstart

Installation

git clone https://github.com/unitaryfund/ucc.git
cd ucc
pip install -e . # Editable mode

Example with Qiskit, Cirq, and PyTKET

Define a circuit with your preferred quantum SDK and compile it!

from ucc import compile

from pytket import Circuit as TketCircuit
from cirq import Circuit as CirqCircuit
from qiskit import QuantumCircuit as QiskitCircuit
from cirq import H, CNOT, LineQubit

def test_tket_compile():
    circuit = TketCircuit(2)
    circuit.H(0)
    circuit.CX(0, 1)
    compile(circuit)

def test_qiskit_compile():
    circuit = QiskitCircuit(2)
    circuit.h(0)
    circuit.cx(0, 1)
    compile(circuit)

def test_cirq_compile():
    qubits = LineQubit.range(2)
    circuit = CirqCircuit(
        H(qubits[0]), 
        CNOT(qubits[0], qubits[1]))
    compile(circuit)

How does UCC stack up?

We run benchmarks regularly to compare against the most recent versions of the most popular quantum compiler frameworks for a range of circuits. Here's the latest: alt text And here you can see progress over time (changes usually indicate a newer version came out): alt text Note that the compile times before 2024-12-10 may have been run on different classical compute instances, so their exact runtime is not as important to compare as their relative performance with respect to other compilers. After 2024-12-10, all data present in this plot should be run on the same compute instance using our ucc-benchmarks GitHub Actions workflow.

Benchmarking

You can benchmark the performance of ucc against other compilers using scripts/run_benchmarks.sh. This script runs compiler benchmarks in parallel, so you will need to first install parallel to support it. On Mac you can do this with brew install parallel.

Contributing

We’re building UCC as a community-driven project. Your contributions help improve the tool for everyone! There are many ways you can contribute, such as

  • Create a Custom Compiler Pass: Learn how in the User Guide
  • Submit a bug report or feature request: Submit a bug report or feature request on GitHub.
  • Contribute Code: Follow the Contribution Guide to submit new passes and improvements.

If you have questions about contributing please ask on the Unitary Foundation Discord.

License

UCC is distributed under GNU Affero General Public License version 3.0(AGPLv3). Parts of ucc contain code or modified code that is part of Qiskit, which is distributed under Apache 2.0 license.

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

ucc-0.4.1.tar.gz (71.5 kB view details)

Uploaded Source

Built Distribution

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

ucc-0.4.1-py3-none-any.whl (99.5 kB view details)

Uploaded Python 3

File details

Details for the file ucc-0.4.1.tar.gz.

File metadata

  • Download URL: ucc-0.4.1.tar.gz
  • Upload date:
  • Size: 71.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.0

File hashes

Hashes for ucc-0.4.1.tar.gz
Algorithm Hash digest
SHA256 da4ed13b2c33186df8415d7f23a425c357a7d32203f4a13d37d5a644d8a56ef1
MD5 65a3830aba4bc977ff6d0c81d71a063e
BLAKE2b-256 07882dcd4ec4f6df5aaa47a2c8624416c4bdfbc6a98ffc92c70ffd3a45fb043b

See more details on using hashes here.

File details

Details for the file ucc-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: ucc-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 99.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.0

File hashes

Hashes for ucc-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 012ab21977d6e7611c7e89da68ae42b5dd2ba1494f579102b386b3234306f6b5
MD5 b3a51714b224e80f36b190e9172da44a
BLAKE2b-256 8bc0fcdfa08a643ca372e9ed68d7408804ca1cc9424a72bc481682dc8027977c

See more details on using hashes here.

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