qiskit/releasenotes/notes/0.17/update-meas-map-interpretat...

59 lines
2.4 KiB
YAML

---
upgrade:
- |
The interpretation of ``meas_map`` (which
is an attribute of a
:class:`~qiskit.providers.models.PulseBackendConfiguration` object or
as the corresponding ``meas_map`` kwarg on the
:func:`~qiskit.compiler.schedule`, :func:`~qiskit.compiler.assemble`,
:func:`~qiskit.compiler.sequence`, or
:func:`~qiskit.execute_function.execute` functions) has been updated
to better match the true constraints of the hardware. The format of this
data is a list of lists, where the items in the inner list are integers
specifying qubit labels. For instance::
[[A, B, C], [D, E, F, G]]
Previously, the ``meas_map`` constraint was interpreted such that
if one qubit was acquired (e.g. A), then all other qubits sharing
a subgroup with that qubit (B and C) would have to be acquired
at the same time and for the same duration. This constraint has been
relaxed. One acquisition does not require more acquisitions. (If A is
acquired, B and C do **not** need to be acquired.) Instead, qubits in the
same measurement group cannot be acquired in a partially overlapping way
-- think of the ``meas_map`` as specifying a shared acquisition resource
(If we acquire A from ``t=1000`` to ``t=2000``, we cannot acquire B
starting from ``1000<t<2000``). For example:
.. code-block:: python
# Good
meas_map = [[0, 1]]
# Acquire a subset of [0, 1]
sched = pulse.Schedule()
sched = sched.append(pulse.Acquire(10, acq_q0))
# Acquire 0 and 1 together (same start time, same duration)
sched = pulse.Schedule()
sched = sched.append(pulse.Acquire(10, acq_q0))
sched = sched.append(pulse.Acquire(10, acq_q1))
# Acquire 0 and 1 disjointly
sched = pulse.Schedule()
sched = sched.append(pulse.Acquire(10, acq_q0))
sched = sched.append(pulse.Acquire(10, acq_q1)) << 10
# Acquisitions overlap, but 0 and 1 aren't in the same measurement
# grouping
meas_map = [[0], [1]]
sched = pulse.Schedule()
sched = sched.append(pulse.Acquire(10, acq_q0))
sched = sched.append(pulse.Acquire(10, acq_q1)) << 1
# Bad: 0 and 1 are in the same grouping, but acquisitions
# partially overlap
meas_map = [[0, 1]]
sched = pulse.Schedule()
sched = sched.append(pulse.Acquire(10, acq_q0))
sched = sched.append(pulse.Acquire(10, acq_q1)) << 1