-
Notifications
You must be signed in to change notification settings - Fork 370
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
Prepare 0.12.0 release #1739
Changes from all commits
125e187
6e735f1
1f1367e
7167885
21bd1ef
b6f8e60
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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. |
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``. | ||
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. |
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. |
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
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. |
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. |
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 |
---|---|---|
@@ -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. |
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
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is this meant to be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Heh, it's No idea why, but that seems to be the convention in |
||
Cmake build process will stop. |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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