EmbedAllPermutationsPass

class EmbedAllPermutationsPass(input_perm=False, output_perm=True, vary_topology=True, inner_synthesis=<bqskit.passes.synthesis.leap.LEAPSynthesisPass object>, scoring_fn=<function multi_qudit_op_count>)[source]

Bases: BasePass

Embed permutation aware synthesis results into a flow for future use.

__init__(input_perm=False, output_perm=True, vary_topology=True, inner_synthesis=<bqskit.passes.synthesis.leap.LEAPSynthesisPass object>, scoring_fn=<function multi_qudit_op_count>)[source]

Construct a EmbedAllPermutationsPass.

Parameters:
  • input_perm (bool) – If true, vary the input permutation during synthesis. (Default: False)

  • output_perm (bool) – If true, vary the output permutation during synthesis. (Default: True)

  • vary_topology (bool) – If true, vary the desired coupling graph during synthesis. (Default: True)

  • inner_synthesis (SynthesisPass) – The synthesis algorithm used on all permutations. (Default: LEAPSynthesisPass)

  • scoring_fn (Callable[[Circuit], float]) – The scoring function used when comparing the original circuit to the synthesized circuit with the same configuration. The smallest score wins. (Default: multi_qudit_op_count())

Attributes

name

The name of the pass.

Methods

execute(*args, **kwargs)

Map a function over iterable arguments in parallel.

get_connectivity(_, data)

Retrieve the current connectivity of the circuit.

get_model(_, data)

Retrieve the machine model from the data dictionary.

get_placement(_, data)

Retrieve the logical to physical qubit map from the data dictionary.

get_target(_, data)

Retrieve the target from the data dictionary.

in_parallel(data)

Return true if pass is being executed in a parallel.

run(circuit, data)

Perform the pass's operation, see BasePass for more.