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)?
Jawaban cepat: tidak selalu.
Cara Qiskit bekerja dengan sirkuit kuantum dan backend adalah:
- Hasilkan sirkuit kuantum dengan API. Rangkaian kuantum disimpan dalam suatu
QuantumCircuit
objek.
- Ubah
QuantumCircuit
objek ini menjadi DAGCircuit
objek yang mewakili sirkuit kuantum yang sama tetapi menggunakan DAG sebagai ganti daftar gerbang.
- Berikan
DAGCircuit
objek ini ke kompiler. Kompiler menangani beberapa hal:
- Menghargai topologi backend yang Anda kompilasi. Ini adalah langkah yang akan mengganggu Anda karena kompiler mungkin akan "acak" (bukan secara acak tentu saja) qubit Anda. Satu pengecualian yang saya lihat adalah ketika sirkuit sudah menghormati topologi backend. Dalam hal ini kompiler tidak dapat mengubah qubit.
- Menghargai gerbang dasar yang digunakan oleh backend.
- Mengoptimalkan sirkuit Anda. Langkah ini mungkin juga bermasalah. Saya tidak tahu apakah optimasi seperti itu ada dalam kompiler Qiskit, tetapi jika kompiler mencoba untuk mengoptimalkan juga sehubungan dengan tingkat kesalahan maka Anda mungkin berakhir dengan "shuffled" qubit.
Anda perlu memeriksa apa yang saya katakan secara eksperimental.
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?
Sepertinya tidak mungkin bagi saya tetapi mari kita tunggu jawaban dari salah satu pengembang 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?
Sangat sedikit.
Q12
Q13
CX
CX
( 1 - 0,041 )nnCX
10 CX
≈ 0,6620≈ 0,43