1) While defining a circuit on QISkit, does q[0] always correspond to the same qubit on a device
(e.g. the qubit labeled q0 on the device manual)? If so, how can I only use for example qubit 12 and
13 of ibmq_16_melbourne (just as an example)?
Schnelle Antwort: nicht immer.
Qiskit arbeitet mit Quantenschaltungen und Backends wie folgt:
- Generieren Sie die Quantenschaltung mit der API. Die Quantenschaltung ist in einem
QuantumCircuit
Objekt gespeichert .
- Transformieren Sie dieses
QuantumCircuit
Objekt in ein DAGCircuit
Objekt, das dieselbe Quantenschaltung darstellt, jedoch eine DAG anstelle einer Liste von Gattern verwendet.
- Geben Sie dieses
DAGCircuit
Objekt dem Compiler. Der Compiler kümmert sich um mehrere Dinge:
- Beachten Sie die Topologie des Backends, für das Sie kompilieren. Dies ist der Schritt, der Sie stören wird, da der Compiler Ihre Qubits wahrscheinlich (natürlich nicht zufällig) "mischen" wird. Eine Ausnahme, die ich sehe, ist, wenn die Schaltung die Backend-Topologie bereits berücksichtigt. In diesem Fall darf der Compiler die Qubits nicht ändern.
- Respektieren der vom Backend verwendeten Basis-Gates.
- Optimieren Sie Ihre Schaltung. Dieser Schritt könnte auch problematisch sein. Ich weiß nicht, ob eine solche Optimierung im Qiskit-Compiler vorhanden ist, aber wenn der Compiler versucht, auch in Bezug auf die Fehlerraten zu optimieren, kann dies zu "gemischten" Qubits führen.
Sie müssen überprüfen, was ich experimentell sage.
2) If one job is being executed on a device, say for instance using 3 qubits, is any other job being
ran on that device at the same time?
Es scheint mir unwahrscheinlich, aber warten wir auf die Antwort eines der Entwickler von Qiskit.
3) How many CNOT gates one circuit can have so that its error stays reasonable? Basically, how
deep can a circuit be on any of the devices to get a reasonable result?
Sehr wenig.
Q12
Q13
CX
CX
( 1 - 0,041 )nnCX
10 CX
≤ 0,6620≤ 0,43