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

Prepare 0.12.0 release #1739

Merged
merged 6 commits into from
Mar 9, 2023
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
features:
- |
Added a new class method :meth:`~.NoiseModel.from_backend_properties` to
the :class:`NoiseModel`. This enables constructing a new :class:`~.NoiseModel`
from a :class:`~qiskit.providers.BackendProperties` object. Similar functionality used
to be present in the :meth:`.NoiseModel.from_backend` constructor,
however it was removed since a :class:`~qiskit.providers.BackendProperties` object alone
doesn't contain sufficient information to create a :class:`~.NoiseModel`
object.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
features:
- |
Added a new class, :class:`~.AerDensityMatrix`, to the :mod:`qiskit_aer.quantum_info`
module. This class is used to provide the same interface to the
upstream :class:`~qiskit.quantum_info.DensityMatrix` class in Qiskit but backed by
Qiskit Aer's simulation.
18 changes: 18 additions & 0 deletions releasenotes/notes/0.12/add-grouping-fcc4fad69ccdac26.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
features:
- |
Added a new keyword argument, ``abelian_grouping``, to
the :class:`~.Estimator`. This argument is used to control whether the
:class:`~.Estimator` will group the input observables into qubit-wise
commutable observables which reduces the number of circuit executions
required to compute the expectation value and improves the runtime
performance of the :class:`~.Estimator`. By default this is set to
``True``.
upgrade:
- |
The default behavior of the :class:`~.Estimator` primitive will now
group the input observable into qubit-wise commutable observables.
The grouping reduces the number of circuits to be executed and improves
the performance. If you desire the previous behavior you can initialize
your :class:`~.Estimator` instance with the keyword argument
``abelian_grouping=False``.
Comment on lines +13 to +18
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should mention that there should be no difference in the returned results, assuming that's correct?

Copy link
Member Author

@mtreinish mtreinish Mar 9, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't actually know, I would assume it would be no different. But we can always add it after after @ikkoham confirms

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
fixes:
- |
Fixed an issue when creating a new :class:`~.AerStatevector` instance
from a ``numpy.ndarray`` that had non-contiguous memory. Previously,
this would result in unexpected behavior (and a potential error) as
the :class:`~.AerStatevector` assumed the input array was contiguous. This
has been fixed so that memory layout is checked and the ``numpy.ndarray``
will be copied internally as a contiguous array before using it.
7 changes: 7 additions & 0 deletions releasenotes/notes/0.12/fix-split-cregs-5b5494a92c4903e7.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
fixes:
- |
Fixed an issue with the :class:`.Sampler` class where it would previously
fail if the input :class:`~.QuantumCircuit` contained multiple
multiple classical registers.
Fixed `#1679 <https://github.com/Qiskit/qiskit-aer/issues/1679>`__
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---

fixes:
- |
Fixed an issue in the matrix product state simulation method (i.e.
setting the keyword argument ``method="matrix_product_state"`` when
initializing an :class:`~.AerSimulator` object) where the simulator
would incorrectly sort the qubits prior to performing measurment
potentially resulting in an infinite loop. This has been fixed so
the measurement of the qubits occurs in the order of the current MPS
structure and then sorting afterwards as a post-processing step. This also
will likely improve the performance of the simulation method and enable
more accurate representation of entangled states.
Fixed `#1694 <https://github.com/Qiskit/qiskit-aer/issues/1694>`__
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
Features:
- |
The performance of the ``stabilizer`` simulation method (i.e. when setting
the keyword argument ``method="stabilizer"`` when initializing an
:class:`~.AerSimulator` instance) has been improved. This
was accomplished by changing the internal data order to align data access
for improved CPU cache locality and improving the efficiency of integer
bit operations.
48 changes: 48 additions & 0 deletions releasenotes/notes/0.12/own_assembler-0c76e67a054bd12c.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
features:
- |
The overhead for running simulations with :meth:`~.AerSimulator.run`
(for all simulator backend classess) has been greatly reduced. This was
accomplished by no longer internally serializing
:class:`~qiskit.circuit.QuantumCircuit` objects into
:class:`~qiskit.qobj.QasmQobj` and instead the
:class:`~qiskit.circuit.QuantumCircuit` object directly to
an internal C++ circuit structure used for simulation. This improvement
is most noticeable for simulations of circuts with a small number of qubits
or parameterized circuits using the ``parameter_binds`` keyword argument
of :meth:`~.AerSimulator.run`.
Note that pulse simualation (via the now deprecated :class:`~.PulseSimulator`)
and DASK-based simulation still use the internal serialization and will
not see this performance improvement.
- |
Added a new method to the :class:`~.AerJob`, :meth:`~.AerJob.circuits`, which
returns a list of :class:`~qiskit.circuit.QuantumCircuit` objects. This method returns
``None`` if Qobj is used for simulation.
deprecations:
- |
The :meth:`~.AerJob.qobj` method of the :class:`AerJob` class is
now deprecated and will be removed in a future release. The use of
the qobj format as input to :meth:`~.AerSimulator.run` has been
deprecated since qiskit-aer 0.9.0 and in most cases this method
would return ``None`` now anyway. If you'd like to get the input
to the ``run()`` method now you can use the :meth:`~.AerJob.circuits`
method instead, which will return the :class:`~.QuantumCircuit`
objects that were simulated in the job.
upgrade:
- |
The behavior of :meth:`~.AerSimulator.run` method has changed when invalid
or otherwise unsimulatable :class:`~.QuantumCircuit` objects are passed as
an input. Previously, in these cases the :meth:`~.AerSimulator.run` method
would return an :class:`~.AerJob` whose :meth:`~.AerJob.result` method would
return a :class:`~.Result` with the ``ERROR`` or ``PARTIAL COMPLETED``
(depending on whether all the circuit inputs or only some were invalid or not).
Starting in this release instead of returning a result object with these statuses
an exception will be raised instead. This change was necessary because
of the performance improvements by no longer internally serializing the
:class:`~.QuantumCircuit` objects to a Qobj before passing it to C++, instead
the direct conversion from :class:`~.QuantumCircuit` now errors directly when
trying to simulate a circuit Qiskit Aer is unable to execute. If you desire the
previous behavior you can build Qiskit Aer in standalone mode and manually
serialize your :class:`~.QuantumCircuit` objects to a JSON representation of
the :class:`~.QasmQobj` which you then pass to the standalone Aer binary
which will retain the previous behavior.
Comment on lines +33 to +48
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels like something that we're going to get comments on one way or the other. I don't know what people prefer, though - I'd reckon that the new behaviour is better.

13 changes: 13 additions & 0 deletions releasenotes/notes/0.12/prepare-0.12-0da477fc0492ca5d.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
prelude: >
The Qiskit Aer 0.12.0 release highlights are:

* Added a new GPU tensor network simulator based on
`cuTensorNet <https://docs.nvidia.com/cuda/cuquantum/cutensornet/index.html>`__
* Added a new :class:`~.AerDensityMatrix` class to the :mod:`qiskit_aer.quantum_info` module
* Greatly improving the runtime performance of the :class:`~.AerSimulator` and the legacy
:class:`~.QasmSimulator`, :class:`~.StatevectorSimulator`, and :class:`~.UnitarySimulator`
classes by directly converting the input :class:`~.QuantumCircuit` objects to an internal
C++ representation instead of first serializing the circuit to a :class:`~.QasmQobj`. This
improvement will be most noticeable for circuits with a small number of qubits or parameterized
circuits using the ``parameter_binds`` keyword argument.
8 changes: 8 additions & 0 deletions releasenotes/notes/0.12/remove-qobj-684e68e99b212973.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
upgrade:
- |
The previously deprecated ``qobj`` argument name of the
:class:`~.AerSimulator` and :class:`~.PulseSimulator` classes'
:meth:`~.AerSimulator.run` method has now been removed. This argument
name was deprecated as part of the Qiskit Aer 0.8.0 release and has
been by the ``circuits`` and ``schedules`` argument name respectively.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ upgrade:
- |
Aer's ``setup.py`` has been updated to no longer attempt to make calls to ``pip`` to
install build requirements, both manually and via the ``setup_requires`` option in
``setuptools.setup``. The preferred way to build Aer is to use a PEP 517-compatible
``setuptools.setup``. The preferred way to build Aer is to use a `PEP 517 <https://peps.python.org/pep-0517/>`__-compatible
builder such as:

.. code-block:: text
Expand Down
24 changes: 24 additions & 0 deletions releasenotes/notes/0.12/tensor_network_gpu-e8eb3e40be3c35f7.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
features:
- |
Added a new simulation method based on NVIDIA's `cuTensorNet <https://docs.nvidia.com/cuda/cuquantum/cutensornet/index.html>`__
APIs of cuQuantum SDK. This provides a GPU accelerated general tensor
network simulator that can simulate any quantum circuit, by internally
translating the circuit into a tensor network to perform the simulation.
To use this simulation method, set ``method="tensor_network"`` and
``device="GPU"`` when initializing an :class:`~.AerSimulator` object.
For example::

from qiskit_aer import AerSimulator

tensor_net_sim = AerSimulator(method="tensor_network", device="GPU")

This method supports both statevector and density matrix simulations.
Noise simulation can also be done with a density matrix single shot
simulation if there are not any :class:`~.SaveStatevector` operations
in the circuit.

This new simulation method also supports parallelization with multiple GPUs and
MPI processes by using tensor network slicing technique. However, this type of
simulation will likely take a very long time if the input circuits are
complicated.
9 changes: 9 additions & 0 deletions releasenotes/notes/0.12/use_conan_1.x-f12570e2cfc8bb26.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
issues:
- |
This release of Qiskit Aer is not compatible with the Conan 2.X release
series. If you are building Qiskit Aer from source manually ensure that
you are using a Conan 1.x release. Compatibility with newer versions
of Conan will be fixed in a future release. You can refer to
issue `#1730 <https://github.com/Qiskit/qiskit-aer/issues/1730>`__ for
more details.
Comment on lines +4 to +9
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we manually set this in our build files? I don't think it should be possible to get into a situation where you're using the wrong Conan anymore, unless you're trying to manually manage things in a direct setuptools build, which is pretty much the wild west of build processes.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do, but it's still probably best to document it as a known limitation just in case it comes up.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
features:
- |
The ``BLA_VENDOR`` environment variable can now be specified to use a
different BLAS library when building Qiskit Aer from source. By default
if this is not specified OpenBLAS will be used by default. If
the BLAS library specified in `BLA_VENDOR`` can not be found then the
Comment on lines +4 to +7
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this meant to be BLAS_VENDOR?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Heh, it's BLA_VENDOR: https://github.com/Qiskit/qiskit-aer/blob/main/cmake/FindBLAS.cmake.fix-static-linking#L42-L63

No idea why, but that seems to be the convention in FindBLAS cmake module

Cmake build process will stop.

This file was deleted.

8 changes: 0 additions & 8 deletions releasenotes/notes/add-grouping-fcc4fad69ccdac26.yaml

This file was deleted.

This file was deleted.

6 changes: 0 additions & 6 deletions releasenotes/notes/cmake_cuda_arch-817eb0b7232bd291.yaml

This file was deleted.

This file was deleted.

11 changes: 0 additions & 11 deletions releasenotes/notes/fix-device-noise-models-2eca2f9c9dc25771.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions releasenotes/notes/fix-local-noise-pass-83815d5a80f9a0e9.yaml

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions releasenotes/notes/fix-split-cregs-5b5494a92c4903e7.yaml

This file was deleted.

8 changes: 0 additions & 8 deletions releasenotes/notes/fix-temperature-a9c51c4599af3a49.yaml

This file was deleted.

This file was deleted.

11 changes: 0 additions & 11 deletions releasenotes/notes/fix-vervose-warnings-efbbbfcb4b65a2a5.yaml

This file was deleted.

8 changes: 0 additions & 8 deletions releasenotes/notes/fix_GPU_statevector-715da5ead0a59fb5.yaml

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

10 changes: 0 additions & 10 deletions releasenotes/notes/mps_fix_apply_measure-84c29a728ae0e717.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions releasenotes/notes/optimized_stabilizer-f696742e7f881d0d.yaml

This file was deleted.

Loading