Prepare 0.9 release (#1344)

Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
This commit is contained in:
Christopher J. Wood 2021-09-15 20:39:51 -04:00 committed by GitHub
parent b3e375aff0
commit daae9cf603
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 154 additions and 140 deletions

View File

@ -1,3 +1,5 @@
.. _dask:
Running with Threadpool and DASK
================================

View File

@ -61,13 +61,6 @@ following ``QuantumCircuit`` methods which are patched when importing Aer.
Saving Simulator Data
=====================
.. note ::
Each save instruction has a default label for accessing from the
circuit result data, however duplicate labels in results will result
in an exception being raised. If you use more than 1 instance of a
specific save instruction you must set a custom label for the
additional instructions.
Simulator State Save Instruction Classes
----------------------------------------
@ -95,6 +88,14 @@ for density matrix method etc.).
methods, however all other save state instructions must be applied
to all qubits in a run circuit.
.. note::
The :class:`~qiskit.providers.aer.StatevectorSimulator` (and
:class:`~qiskit.providers.aer.UnitarySimulator`) backend automatically
append every run circuit with the a :func:`SaveStatevector``
(:func:`SaveUnitary``) instruction using the default label. Hence adding
any additional save instructions of that type will require specifying a
custom label for those instructions.
Simulator Derived Data Save Instruction Classes
-----------------------------------------------
@ -137,6 +138,13 @@ QuantumCircuit Methods
The save instructions can also be added to circuits by using the
following ``QuantumCircuit`` methods which are patched when importing Aer.
.. note ::
Each save method has a default label for accessing from the
circuit result data, however duplicate labels in results will result
in an exception being raised. If you use more than 1 instance of a
specific save instruction you must set a custom label for the
additional instructions.
.. autosummary::
:toctree: ../stubs/

View File

@ -0,0 +1,77 @@
---
prelude: |
The 0.9 release includes new backend options for parallel exeuction
of large numbers of circuits on a HPC cluster using a Dask distributed,
along with other general performance improvements and bug fixes.
features:
- |
Add qiskit library :class:`~qiskit.circuit.library.SXdgGate`
and :class:`~qiskit.circuit.library.CUGate` to the supported basis gates for
the Aer simulator backends. Note that the :class:`~qiskit.circuit.library.CUGate`
gate is only natively
supported for the ``statevector`` and ``unitary`` methods. For other simulation
methods it must be transpiled to the supported basis gates for that method.
- |
Adds support for N-qubit Pauli gate (
:class:`qiskit.circuit.library.generalized_gates.PauliGate`) to all
simulation methods of the
:class:`~qiskit.providers.aer.AerSimulator` and
:class:`~qiskit.providers.aer.QasmSimulator`.
deprecations:
- |
Passing an assembled qobj directly to the
:meth:`~qiskit.providers.aer.AerSimulator.run` method of the Aer simulator
backends has been deprecated in favor of passing transpiled circuits
directly as ``backend.run(circuits, **run_options)``.
- |
All snapshot instructions in :mod:`qiskit.providers.aer.extensions` have
been deprecated. For replacement use the save instructions from the
:mod:`qiskit.providers.aer.library` module.
- |
Adding non-local quantum errors to a
:class:`~qiskit.providers.aer.noise.NoiseModel` has been deprecated due to
inconsistencies in how this noise is applied to the optimized circuit.
Non-local noise should be manually added to a scheduled circuit in Qiskit
using a custom transpiler pass before being run on the simulator.
- |
Use of the ``method`` option of the
:class:`~qiskit.providers.aer.StatevectorSimulator`, and
:class:`~qiskit.providers.aer.UnitarySimulator` to run a GPU simulation
has been deprecated. To run a GPU simulation on a compatible system
use the option ``device='GPU'`` instead.
upgrade:
- |
The default basis for the :class:`~qiskit.providers.aer.noise.NoiseModel`
class has been changed from ``["id", "u3", "cx"]`` to
``["id", "rz", "sx", "cx"]`` due to the deprecation of the ``u3`` circuit
method in qiskit-terra and change of qiskit-ibmq-provider backend basis
gates. To use the old basis gates you can initialize a noise model with
custom basis gates as ``NoiseModel(basis_gates=["id", "u3", "cx"])``.
- |
Removed the ``backend_options`` kwarg from the ``run`` methnod of Aer backends
that was deprecated in qiskit-aer 0.7. All run options must now be passed as
separate kwargs.
- |
Removed passing ``system_model`` as a positional arg for the ``run`` method of the
:class:`~qiskit.providers.aer.PulseSimulator`.
fixes:
- |
Fixes bug where the if the required memory is smaller than the system memory the
multi-chunk simulation method was enabled and simulation was still started.
This case will now throw an insufficient memory exception.
- |
Fixes issue where setting the ``shots`` option for a backend with
``set_options(shots=k)`` was always running the default number of shots (1024)
rather than the specified value.
- |
Fixes a bug in how the :class:`~qiskit.providers.aer.AerSimulator` handled the
option value for ``max_parallel_experiments=1``. Previously this was treated
the same as ``max_parallel_experiments=0``.
- |
Fixes bug in the ``extended_stabilizer`` simulation method where it
incorrectly treated qelay gate and multi-qubit Pauli instructions as
unsupported.
- |
Fixes typo in the :class:`~qiskit.providers.aer.AerSimulator` and
:class:`~qiskit.providers.aer.QasmSimulator` options for the
``extended_stabilizer_norm_estimation_repetitions`` option.

View File

@ -0,0 +1,30 @@
---
features:
- |
Adds the ability to set a custom executor and configure job splitting for
executing multiple circuits in parallel on a HPC clustor. A custom
executor can be set using the ``executor`` option, and job splitting is
configured by using the ``max_job_size`` option.
For example configuring a backend and executing using
.. code-block:: python
backend = AerSimulator(max_job_size=1, executor=custom_executor)
job = backend.run(circuits)
will split the exection into multiple jobs each containing a single
circuit. If job splitting is enabled the ``run`` method will return a
:class:`~qiskit.providers.aer.jobs.AerJobSet` object containing all the
individual :class:`~qiskit.providers.aer.jobs.AerJob` classes. After all
individual jobs finish running the job results are automatically combined
into a single Result object that is returned by ``job.result()``.
Supported executors include those in the Python ``concurrent.futures``
`module <https://docs.python.org/3/library/concurrent.futures.html>`__
(eg. ``ThreadPoolExecutor``, ``ProcessPoolExecutor``), and
`Dask <http://dask.org>`__ distributed Client executors if the optional
dask library is installed. Using a Dask executor allows configuring parallel
execution of multiple circuits on HPC clusters. See the
Dask executor :ref:`API Documentation <dask>` for additional details
on using Dask executors for HPC simulation.

View File

@ -0,0 +1,30 @@
---
features:
- |
Adds ability to record logging data for the ``matrix_product_state``
simulation method to the experiment result metadata by setting the
backend option ``mps_log_data=True``. The saved data includes the
bond dimensions and the discarded value (the sum of the squares of
the Schmidt coeffients that were discarded by approximation) after
every relevant circuit instruction.
fixes:
- |
Fixes bug with applying the ``unitary`` gate in using the ``matrix_product_state``
simulation method which did not correctly support permutations in the ordering of
the qubits on which the gate is applied.
- |
Fixes an issue where gate fusion could still be enabled for the
``matrix_product_state`` simulation method even though it is not supported.
Now fusion is always disabled for this method.
- |
Fixed bug in the ``matrix_product_state`` simulation method in computing the
normalization following truncation of the Schmidt coefficients after
performing the SVD.
other:
- |
Improves the performance of the measurement sampling algorithm for the
``matrix_product_state`` simulation method.
The new default behaviour is to always sample using the
improved ``mps_apply_measure`` method. The ``mps_probabilities`` sampling
method be still used by setting the custom option value
``mps_sample_measure_algorithm="mps_probabilities"``.

View File

@ -1,7 +0,0 @@
---
fixes:
- |
``unitary`` gate in MPS did not support permutations in the ordering of the
qubits on which the gate is applied. Added support for permutations.

View File

@ -1,6 +0,0 @@
---
fixes:
- |
When required memory is smaller than the system memory, multi-chunk was enabled
and simulation was started though memory is short. This fix corrects this behavior
to throw an exception.

View File

@ -1,8 +0,0 @@
---
deprecations:
- |
Adding non-local quantum errors to a
:class:`~qiskit.providers.aer.noise.NoiseModel` has been deprecated due to
inconsistencies in how this noise is applied to the optimized circuit.
Non-local noise should be manually added to a scheduled circuit in Qiskit
using a custom transpiler pass before being run on the simulator.

View File

@ -1,7 +0,0 @@
---
deprecations:
- |
Passing an assembled qobj directly to the
:meth:`~qiskit.providers.aer.AerSimulator.run` method of the Aer simulator
backends has been deprecated in favor of passing transpiled circuits
directly as `backend.run(circuits, **run_options)`.

View File

@ -1,6 +0,0 @@
---
deprecations:
- |
All snapshot instructions in :mod:`qiskit.providers.aer.extensions` have
been deprecated. For replacement use the save instructions from the
:mod:`qiskit.providers.aer.library` module.

View File

@ -1,8 +0,0 @@
---
fixes:
- |
Disabled fusion when using the MPS simulation method, even when fusion is
enabled in the config. Fusion does not run correctly on MPS so should
always be disabled. See issue #1253 for an example.

View File

@ -1,9 +0,0 @@
---
fixes:
- |
Fixes bug in the "extended_stabilizer" simulation method where it
incorrectly treated delay gate and multi-qubit Pauli instructions as
unsupported.
- |
Fixes typo in the `AerSimulator` and ``QasmSimulator`` options for the
``extended_stabilizer_norm_estimation_repetitions`` option.

View File

@ -1,6 +0,0 @@
---
fixes:
- |
Fixes a bug in how the ``AerSimulator`` handled the option value
``max_parallel_experiments=1`` which was being previously being treated
the same as ``max_parallel_experiments=0``.

View File

@ -1,6 +0,0 @@
---
fixes:
- |
Fixes issue where setting the ``shots`` option for a backend with
``set_options(shots=k)`` was always running the default number of shots
rather than the specified value.

View File

@ -1,7 +0,0 @@
---
fixes:
- |
Fixed bug in computing the normalization following truncation of the
Schmidt coefficients following SVD.

View File

@ -1,7 +0,0 @@
---
other:
- |
Performance improvement in algorithm for measure in MPS: when all qubits are
measured, no need to propagate the effect of measuring a single qubit to
all the other qubits; it is sufficient to propagate to the nearest
neighbors, because these neighbors will be measured next.

View File

@ -1,8 +0,0 @@
---
other:
- |
Performance improvement in algorithm for apply_measure in MPS: this
generalizes the improvement done for all qubits to any subset of the qubits.
Also removed the heuristic for choosing the algorithm for sample_measure.
The default is now `mps_apply_measure` and the user can specify
'mps_probabilities` if she prefers that algorithm.

View File

@ -1,10 +0,0 @@
---
features:
- |
If the environment variable `MPS_OUTPUT_DATA` is set to 1, then MPS
log data is printed to the metadata. This includes, after every relevant
instruction, the bond dimensions and the discarded value i.e.,
the sum of the squares of the Schmidt coeffients
that were discarded by approximation.

View File

@ -1,9 +0,0 @@
---
upgrade:
- |
The default basis for the :class:`~qiskit.providers.aer.noise.NoiseModel`
class has been changed from ``["id", "u3", "cx"]`` to
``["id", "rz", "sx", "cx"]`` due to the deprecation of the ``u3`` circuit
method in qiskit-terra and change of qiskit-ibmq-provider backend basis
gates. To use the old basis gates you can initialize a noise model with
custom basis gates as ``NoiseModel(basis_gates=["id", "u3", "cx"])``.

View File

@ -1,8 +0,0 @@
---
features:
- |
Adds support for N-qubit Pauli gate (
:class:`qiskit.circuit.library.generalized_gates.PauliGate`) to all
simulation methods of the
:class:`~qiskit.providers.aer.AerSimulator` and
:class:`~qiskit.providers.aer.QasmSimulator`.

View File

@ -1,6 +0,0 @@
---
upgrade:
- |
The deprecated ``backend_options`` kwarg of the ``run`` method of Aer
backends has been removed. All run options must now be passed as
separate kwargs.

View File

@ -1,8 +0,0 @@
---
deprecations:
- |
Use of the ``method`` option of the
:class:`~qiskit.providers.aer.StatevectorSimulator`, and
:class:`~qiskit.providers.aer.UnitarySimulator` to run a GPU simulation
has been deprecated. To run a GPU simulation on a compatible system
use the option ``device='GPU'`` instead.

View File

@ -1,7 +0,0 @@
---
features:
- |
Add qiskit library SXdgGate and CUGate to the supported basis gates for
the Aer simulator backends. Note that the CUGate gate is only natively
supported for the statevector and unitary methods. For other simulation
methods it must be transpiled to the supported basis gates for that method.