Circuit Execution on MIMIQ

Understanding sampling and executions

Executions on MIMIQ are carried out in different ways depending on the type of the circuit submitted. There are three fundamental cases based on the presence of non-unitary operations such as Measure, IfStatement, or Reset.

No non-unitary operations

In this case the circuit is executed only once and the final state is sampled as many times as specified by the number of samples (nsamples) parameter of the execution. The sampled value of all the qubits is returned (in the obvious ordering).

No mid-circuit measurements and no non-unitary operations

In this case the circuit is executed only once again, and the final state is sampled as many times as specified by nsamples, but only the sampled value of all the classical bits used in the circuit is returned (usually the targets of the measurements at the end of the circuit).

Mid-circuit measurements or non-unitary operations

In this case the circuit is executed nsamples times, and the final state is sampled only once per run. The sampled value of all the classical bits used in the circuit is returned.

Fidelity and Error estimates

Since we allow for the execution of circuits on MIMIQ with non exact methods, we return always a fidelity estimate for each execution.

Fidelity in this case is defined as the squared modulus of the overlap between the final state obtained by the execution and the ideal one. It is a number between 0 and 1, where 1 means that the final state is exactly the one we wanted to obtain.

The fidelity will always be 1.0 for exact methods, but it can be less than that for non exact methods.

In the case of MPS methods, the number returned is an estimate of the actual fidelity of the state. More specifically, it is a lower bound for the fidelity, meaning that the actual fidelity will always be larger or equal to the number reported.

The average multiqubit error estimate is the higher bound of the error done in average when applying a two qubit gate.

Timings

NameDescription
applyTime used to apply all the unitaries of the circuit to the initial state. It also includes the time to allocate the initial state.
compressionTime used to compress the circuit or convert it into a format that is more efficient for the execution on MIMIQ.
sampleTime used to sample the final state of the circuit.
amplitudesTime used to retrieve the amplitudes of the final state of the circuit.
totalTime elapsed from the start of the execution to the end

When reading these timings consider that sampling only account for the time needed to sample the final state. If a circuit needs to be executed multiple time to obtain such samples, the "sample" time will be zero. The contrary is true for the "apply" time, which is the sum of the apply time for all the executions of the circuit.