Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport CutQC removal to stable/0.8 branch #662

Merged
merged 4 commits into from
Aug 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test_development_versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ jobs:
run: |
pver=${{ matrix.python-version }}
tox -epy${pver/./} -- --run-slow
tox -epy${pver/./}-notebook -- --ignore=docs/circuit_cutting/cutqc/tutorials
tox -epy${pver/./}-notebook
9 changes: 2 additions & 7 deletions .github/workflows/test_latest_versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
os: [ubuntu-latest]
python-version: ["3.9", "3.12"]
include:
- os: macos-13
- os: macos-latest
python-version: "3.8"
- os: windows-latest
python-version: "3.10"
Expand All @@ -46,9 +46,4 @@ jobs:
run: |
pver=${{ matrix.python-version }}
tox -epy${pver/./} -- --run-slow
notebook_flags=""
if [ "$pver" = "3.12" ]; then
echo Skipping tutorials that require cplex
notebook_flags="${notebook_flags} --ignore=docs/circuit_cutting/cutqc/tutorials/tutorial_1_automatic_cut_finding.ipynb"
fi
tox -epy${pver/./}-notebook -- ${notebook_flags}
tox -epy${pver/./}-notebook
3 changes: 0 additions & 3 deletions CITATION.bib
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ @misc{circuit-knitting-toolbox
and Edwin Pednault
and C. D. Pemmaraju
and Pedro Rivero
and Seetharami Seelam
and Ibrahim Shehzad
and Dharmashankar Subramanian
and Wei Tang
and Stefan Woerner
},
title = {{Circuit Knitting Toolbox}},
Expand Down
53 changes: 6 additions & 47 deletions INSTALL.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,8 @@ packages. There are three primary ways to do this:
- :ref:`Option 2`
- :ref:`Option 3`

CutQC users should consult the :ref:`Platform Support` section to determine
which installation option is appropriate for them. Users who wish to run within a
containerized environment may skip the pre-installation and move straight
to :ref:`Option 3`.

.. note::

If a user wishes to use the circuit cutting toolbox to
automatically find optimized wire cuts for a circuit too large for
the free version of CPLEX, they should acquire a license and install
the `full
version <https://www.ibm.com/products/ilog-cplex-optimization-studio>`__.
Users who wish to run within a containerized environment may skip the
pre-installation and move straight to :ref:`Option 3`.

Pre-Installation
^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -61,14 +51,6 @@ Upgrade pip and install the CKT package.
pip install --upgrade pip
pip install circuit-knitting-toolbox

Users intending to use the automatic cut finding functionality in the CutQC package should install the ``cplex`` optional dependency.

Adjust the options below to suit your needs.

.. code:: sh

pip install 'circuit-knitting-toolbox[cplex]'


.. _Option 2:

Expand All @@ -94,13 +76,11 @@ The next step is to install CKT to the virtual environment. If you plan on runni
notebook dependencies in order to run all the visualizations in the notebooks.
If you plan on developing in the repository, you may want to install the ``dev`` dependencies.

Users intending to use the automatic cut finding functionality in the CutQC package should install the ``cplex`` optional dependency.

Adjust the options below to suit your needs.

.. code:: sh

pip install tox notebook -e '.[notebook-dependencies,dev,cplex]'
pip install tox notebook -e '.[notebook-dependencies,dev]'

If you installed the notebook dependencies, you can get started with CKT by running the notebooks in the docs.

Expand Down Expand Up @@ -166,27 +146,6 @@ the only one that will be saved across different container runs.
Platform Support
^^^^^^^^^^^^^^^^

Users of Mac M1 or M2 chips and Windows users may have issues running certain components of CKT.

If you are using Linux or macOS with an Intel chip (i.e., not the
new M1 or M2 chips), everything should work natively, so we
recommend either :ref:`Option 1` or :ref:`Option 2`.

All users on ARM chips, as well as all Windows users, may have to
take care when installing the toolbox, depending on which tools they
intend to use.

- The automatic wire cut search in the ``cutqc`` package depends
on CPLEX, which is only available on Intel chips and is not yet available
for Python 3.12.

In each case, one method that is guaranteed to work is to :ref:`use
the toolbox within Docker <Option 3>`. Other methods include:

- Users on Apple's M series of chips may wish to install an x86
version of Python. For instance, `conda
<https://docs.conda.io/en/latest/miniconda.html>`__ users can run
``CONDA_SUBDIR=osx-64 conda create -n x86_venv python=3`` to
create a virtual environment that uses Python compiled for the x86
instruction set. No matter the installation method, there is a
performance cost due to emulation.
We expect this package to work on `any platform supported by Qiskit <https://docs.quantum.ibm.com/start/install#operating-system-support>`__. If
you are experiencing issues running the software on your device, you
may consider :ref:`using the toolbox within Docker <Option 3>`.
10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
Circuit Knitting is the process of decomposing a larger quantum circuit into many smaller circuits, executing those circuits on a quantum processor(s), and then knitting their results into a reconstruction of the original circuit's outcome.

The toolbox currently contains the following tools:
- Circuit Cutting [[1-6]](#references)
- Circuit Cutting [[1-5]](#references)

For a more detailed discussion on circuit cutting, check out our [technical guide](https://qiskit-extensions.github.io/circuit-knitting-toolbox/circuit_cutting/explanation/index.html#overview-of-circuit-cutting).

Expand All @@ -46,10 +46,10 @@ All CKT documentation is available at https://qiskit-extensions.github.io/circui

### Installation

We encourage installing CKT via ``pip``, when possible. Users intending to use the automatic cut finding functionality in the ``CutQC`` package should install the ``cplex`` optional dependency.
We encourage installing CKT via ``pip``, when possible.

```bash
pip install 'circuit-knitting-toolbox[cplex]'
pip install 'circuit-knitting-toolbox'
```

For information on installing from source, running CKT in a container, and platform support, refer to the [installation instructions](https://qiskit-extensions.github.io/circuit-knitting-toolbox/install.html) in the CKT documentation.
Expand All @@ -72,9 +72,7 @@ This project is meant to evolve rapidly and, as such, does not follow [Qiskit's

[4] Lukas Brenner, Christophe Piveteau, David Sutter, [Optimal wire cutting with classical communication](https://arxiv.org/abs/2302.03366), arXiv:2302.03366 [quant-ph].

[5] Wei Tang, Teague Tomesh, Martin Suchara, Jeffrey Larson, Margaret Martonosi, [CutQC: Using small quantum computers for large quantum circuit evaluations](https://doi.org/10.1145/3445814.3446758), Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems. pp. 473 (2021).

[6] K. Temme, S. Bravyi, and J. M. Gambetta, [Error mitigation for short-depth quantum circuits](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.119.180509), Physical Review Letters, 119(18), (2017).
[5] K. Temme, S. Bravyi, and J. M. Gambetta, [Error mitigation for short-depth quantum circuits](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.119.180509), Physical Review Letters, 119(18), (2017).

----------------------------------------------------------------------------------------------------

Expand Down
15 changes: 0 additions & 15 deletions circuit_knitting/cutting/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,6 @@
qpd.generate_qpd_weights
qpd.decompose_qpd_instructions
qpd.qpdbasis_from_instruction

CutQC
=====

.. autosummary::
:toctree: ../stubs/
:nosignatures:

cutqc.run_subcircuit_instances
cutqc.generate_summation_terms
cutqc.build
cutqc.verify
cutqc.cut_circuit_wires
cutqc.evaluate_subcircuits
cutqc.reconstruct_full_distribution
"""

from .cutting_decomposition import (
Expand Down
45 changes: 0 additions & 45 deletions circuit_knitting/cutting/cutqc/__init__.py

This file was deleted.

Loading
Loading