Skip to content

Commit

Permalink
Transpiler integration refactor and qiskit v1.2 support (#116)
Browse files Browse the repository at this point in the history
* Minimal changes to support qiskit v1.2 - layout preservation of transpile_to_IQM broke here.

* Update version

* Native qiskit tranpsiler integration.

* change the fidelity number to error

* Updated user guide with new transpiler information

* Removed Brittish spelling

* Changes to reflect supported CZ directions as calibrated in the hardware

* Drop qiskit 0.45 support

* Added a section of transpiler plugins

* Remove DQA sorting, it should be sorted already.

* Add deserialization of iqm-client circuits to qiksit circuits

* transpiler keeps layout

* Move gate unitary now has some arbitrary phase

* resonators now inferred from MOVE gate implementations

* Added method for restricting transpilation to a subset of qubits

* Restructured files to make sense

* generate_initial_layout now uses the correct target

* Add the delay operation.

* Test for delay.

* Additional transpile_to_IQM and deserialization tests

* New layout generation algorithm.

* Bump iqm-client.

* Drop Python 3.9 support.

* Drop qiskit<1.0 support.

* Examples updated.

* Update black in tox -e format

* Removed qiskit-monitor tests as this will always be skipped

---------

Co-authored-by: Arianne Meijer <[email protected]>
Co-authored-by: sourav.majumder <[email protected]>
Co-authored-by: Ville Bergholm <[email protected]>
Co-authored-by: Per Liebermann <[email protected]>
Co-authored-by: Janne Kotilahti <[email protected]>
  • Loading branch information
6 people authored Feb 18, 2025
1 parent 2565ade commit 2f578fe
Show file tree
Hide file tree
Showing 41 changed files with 2,971 additions and 1,918 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
platform: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
python-version: [ '3.10', '3.11', '3.12' ]
steps:
- uses: actions/checkout@v4
- name: Setup Python
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:
strategy:
matrix:
platform: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
python-version: [ '3.10', '3.11', '3.12' ]
steps:
- uses: actions/checkout@v4
- name: Setup Python
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down Expand Up @@ -58,7 +58,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
48 changes: 47 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,56 @@
Changelog
=========

Version 17.0
============

* Removed support for Python 3.9.
* Removed support for ``qiskit < 1.0``.
* Added support for ``qiskit == 1.2`` and ``qiskit-aer == 0.15``.
* Updated the documentation.
* :meth:`.IQMBackendBase.qubit_name_to_index` and :meth:`.IQMBackendBase.index_to_qubit_name` now
raise an error when using an invalid qubit name or index, rather than returning None.
* Refactored :meth:`.IQMBackend.create_run_request` to improve user experience when using IQM
specific run options.
* Moved the circuit serialization logic from :class:`.IQMProvider` to :mod:`iqm.qiskit_iqm.qiskit_to_iqm`.
* For IQM Star quantum architectures, :attr:`.IQMBackendBase.target_with_resonators` represents the
full, physical architecture. :attr:`.IQMBackendBase.target` represents a Qiskit-compatible version.
* Using the Qiskit transpiler with :class:`.IQMBackend`:

* You can now use the native Qiskit :func:`transpile` function to transpile a circuit to the IQM
Star architecture as long as your initial circuit does not use any resonators.
* The Qiskit transpiler now automatically uses the :class:`.IQMOptimizeSingleQubitGates` pass to
optimize single-qubit gates if ``optimization_level > 0``.
* There are many new transpiler plugins available that you can use as the ``scheduling_method``
argument in Qiskit's :func:`transpile` function. You can find them in the
`Qiskit documentation <https://docs.quantum.ibm.com/guides/transpiler-plugins>`_.
* If your circuit contains resonators, and optionally :class:`.MoveGate` operations, you can use
the :func:`.transpile_to_IQM` function to transpile your circuit for the IQM Star architecture.
* :func:`.transpile_to_IQM` can now restrict itself to use a subset of the qubits by specifying
the ``restrict_to_qubits`` argument. You will need to additionally provide a qubit mapping to the
:meth:`.IQMBackend.run` method to ensure that the correct qubits are used.

* Bugfix where the :func:`.transpile_to_IQM` did not retain the circuit layout after transpiling.
* Fixed :func:`.IQMFakeDeneb` readout errors. Fidelities were reported as errors.
`#125 <https://github.com/iqm-finland/qiskit-on-iqm/pull/125>`_
* :attr:`.IQMBackend.target` now contains symmetric gates such as CZ only in the direction they appear
in the calibration set. `#140 <https://github.com/iqm-finland/qiskit-on-iqm/pull/140>`_
* Deprecated features:

* :func:`.optimize_single_qubit_gates` has been deprecated in favor of using the new transpiler
plugins or :func:`.transpile_to_IQM`. Additionally, this is now incorporated into the Qiskit
transpiler as documented above.
* In :meth:`.IQMBackend.create_run_request`, and as a result in :meth:`.IQMBackend.run`, the
``max_circuit_duration_over_t2`` and ``heralding_mode`` options have been deprecated in favor of
using the :class:`.CircuitCompilationOptions` class from :mod:`iqm.iqm_client`.
* The :class:`.IQMBackend` no longer uses Qiskit's ``options`` attribute to give run options in
favor of using the arguments of the :meth:`.IQMBackend.run` method directly.


Version 15.6
============

* Added python 3.12 support. `#139 <https://github.com/iqm-finland/qiskit-on-iqm/pull/139>`
* Added Python 3.12 support. `#139 <https://github.com/iqm-finland/qiskit-on-iqm/pull/139>`
* Python 3.9 support is deprecated and will be removed in the future.

Version 15.5
Expand Down
Loading

0 comments on commit 2f578fe

Please sign in to comment.