Before applying gates and measurement instructions, partitions are created. Each partition are to be executed sequentially and instructions inside a partition can be computed in parallel.
from qiskit import *
q = QuantumRegister(3)
c = ClassicalRegister(3)
qc = QuantumCircuit(q,c)
qc.u1(3.6,0)
qc.cx(0,1)
qc.u1(2.6,2)
qc.cx(1,0)
qc.s(2)
qc.y(2)
backend = BasicAer.get_backend('dm_simulator')
options = {
'show_partition': True
}
run = execute(qc,backend,**options)
No measurements in circuit "circuit0", classical register will remain all zeros.
PARTITIONED CIRCUIT Partition 0 U1 qubit [0] [3.6] U3 qubit [2] [3.141593, 1.570796, 5.741593] Partition 1 C-NOT qubit [0, 1] Partition 2 C-NOT qubit [1, 0]
Measurements are considered in a separate partition. Among measurements, {'Ensemble','Expect','Bell'} are treated separately.
q = QuantumRegister(3)
c = ClassicalRegister(3)
qc = QuantumCircuit(q,c)
qc.u1(3.6,0)
qc.cx(0,1)
qc.u1(2.6,2)
qc.measure(1,1,basis='X')
qc.measure(0,0,basis='Y')
qc.cx(1,0)
qc.s(2)
qc.y(2)
qc.measure(1,1,basis='Bell',add_param='12')
qc.measure(0,0)
qc.measure(q,c,basis='Ensemble',add_param='X')
backend = BasicAer.get_backend('dm_simulator')
options = {
'show_partition': True
}
run = execute(qc,backend,**options)
PARTITIONED CIRCUIT Partition 0 U1 qubit [0] [3.6] U3 qubit [2] [3.141593, 1.570796, 5.741593] Partition 1 C-NOT qubit [0, 1] Partition 2 measure qubit [0] [Y] measure qubit [1] [X] Partition 3 C-NOT qubit [1, 0] Partition 4 measure qubit [1] [Bell, 12] Partition 5 measure qubit [0] ['Z'] Partition 6 measure qubit [0] [Ensemble, X] measure qubit [1] [Ensemble, X] measure qubit [2] [Ensemble, X]