Skip to content

Commit

Permalink
Fix short circuit detection for basis translator (#12899) (#12921)
Browse files Browse the repository at this point in the history
The BasisTranslator transpiler pass has a check at the very start that
is designed to return fast if there is nothing to translate; in
other words if the instructions in the circuit are already a subset of
instructions supported by the target. This avoid doing a lot of
unecessary work to determine this later during the operation of the
pass. However, this check was not correctly constructed because of a
type mismatch and would only ever get triggered if the input circuit was
empty. The source basis is collected as a `Set[Tuple[str, int]]` where
each tuple is the name and num of qubits for each operation in the
circuit. While the target basis is just a `Set[str]` for the names
supported on the target. This mismatch caused the subset check to never
return True unless it was empty thereby bypassing the intent of the
short circuit path. This commit fixes the logic by constructing a
temporary set of just the source names to evaluate whether we should
return early or not.

(cherry picked from commit fa5510c)

Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
  • Loading branch information
mergify[bot] and mtreinish committed Aug 8, 2024
1 parent f1034e9 commit 3e88060
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion qiskit/transpiler/passes/basis/basis_translator.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,8 @@ def run(self, dag):
# If the source basis is a subset of the target basis and we have no circuit
# instructions on qargs that have non-global operations there is nothing to
# translate and we can exit early.
if source_basis.issubset(target_basis) and not qargs_local_source_basis:
source_basis_names = {x[0] for x in source_basis}
if source_basis_names.issubset(target_basis) and not qargs_local_source_basis:
return dag

logger.info(
Expand Down

0 comments on commit 3e88060

Please sign in to comment.