Mapping#
Module: iqm.qaoa.transpiler.routing
- class iqm.qaoa.transpiler.routing.Mapping(*args, **kwargs)[source]#
Bases:
BaseMappingMapping between logical and hardware qubits.
It maintains two dictionaries:
log2hardandhard2logwhich are mappings between logical and hardware qubits. They are always kept in sync. The names for the hardware and logical qubits are extracted fromqpuandproblem_bqmat initialization.- Parameters:
qpu (QPU) – a
QPUobject describing the topology of the QPU, used to get hardware qubits.problem_bqm (BinaryQuadraticModel) – The
BinaryQuadraticModelof the problem we’re trying to solve, used to get logical qubits.partial_initial_mapping (dict[HardQubit, LogQubit] | None) – An optional dictionary that contains a partial mapping to use as a starting point. The keys should be
HardQubitand the valuesLogQubit.
- Raises:
ValueError – If there are more logical qubits than hardware qubits.
ValueError – If
partial_initial_mappingis provided, but it’s not bijective.ValueError – If
partial_initial_mappingis provided, but it contains qubits not existing on the QPU.
Attributes
The dictionary containing the mapping from hardware qubits to logical qubits.
The dictionary containing the mapping from logical qubits to hardware qubits.
Methods
Move a logical qubit from a one hardware qubit to a an unassigned hardware qubit on the QPU.
Swap association between a pair of hardware qubits.
Swap association between a pair of logical qubits.
Update the mapping based on the swap gates found in a
Layerobject.- property hard2log: dict[HardQubit, LogQubit | None]#
The dictionary containing the mapping from hardware qubits to logical qubits.
- property log2hard: dict[LogQubit, HardQubit]#
The dictionary containing the mapping from logical qubits to hardware qubits.
- swap_log(gate)[source]#
Swap association between a pair of logical qubits.
Updates the dictionaries
hard2logandlog2hard.- Parameters:
gate (LogEdge) – The pair of logical qubits to swap.
- Return type:
None
- swap_hard(gate)[source]#
Swap association between a pair of hardware qubits.
Updates the dictionaries
hard2logandlog2hard.- Parameters:
gate (HardEdge) – The pair of hardware qubits to swap.
- Return type:
None
- move_hard(source_qubit, target_qubit)[source]#
Move a logical qubit from a one hardware qubit to a an unassigned hardware qubit on the QPU.
The target
target_qubitmust be mapped toNoneinhard2logand (correspondingly) it must not appear among the values oflog2hard. The mapping dictionarieshard2logandlog2hardare changed as follows:The value assigned to the key
source_qubitinhard2logchanges toNone. The value assigned totarget_qubitchanges to the previous value ofsource_qubit.The dictionary
log2hardis modified correspondingly. The valuesource_qubitis changed totarget_qubit.
- Parameters:
- Raises:
ValueError – If the
target_qubitis already assigned to a different logical qubit.ValueError – If the
source_qubitis not assigned to any logical qubit.
- Return type:
None
- update(layer)[source]#
Update the mapping based on the swap gates found in a
Layerobject.A convenience function that iterates over the gates in a
Layerobject and swaps the hardware qubits corresponding to swap gates.- Parameters:
layer (Layer) – The layer whose swap gates are used.
- Return type:
None
Inheritance
