CNOT apa yang diizinkan secara fisik untuk chip qubit 19 milik Rigetti dan chip BristleCone 72 qubit Google?

12

Untuk setiap chip kuantum IBM, seseorang dapat menulis kamus yang memetakan setiap kontrol qubit j ke daftar target yang diizinkan secara fisik, dengan anggapan j adalah kontrol dari CNOT. Sebagai contoh,

ibmqx4_c_to_tars = {
    0: [],
    1: [0],
    2: [0, 1, 4],
    3: [2, 4],
    4: []}  # 6 edges

untuk chip ibmqx4 mereka.

Apa yang akan menentukan untuk chip Bristlecone 72 qubit Google. Anda dapat menulis dikt sebagai pemahaman. Pertanyaan yang sama untuk chip qubit 19 milik Rigetti.

rrtucci
sumber
Mungkin Anda bisa menambahkan tautan ke deskripsi chip dalam pertanyaan? Saya gagal menemukan spesifikasi chip Regitti.
Awal
Jim Wootton harus tahu
rrtucci

Jawaban:

12

Operasi asli Bristlecone adalah CZ, bukan CNOT. Namun, Anda dapat mengubah antara keduanya dengan gerbang Hadamard jadi ini semacam perbedaan sepele.

Bristlecone dapat melakukan CZ antara pasangan qubit yang berdekatan di grid. Anda dapat melihat kisi dengan menginstal cirq dan mencetak perangkat Bristlecone:

$ pip install cirq
$ python
>>> import cirq
>>> print(cirq.google.Bristlecone)
                                             (0, 5)────(0, 6)
                                             │         │
                                             │         │
                                    (1, 4)───(1, 5)────(1, 6)────(1, 7)
                                    │        │         │         │
                                    │        │         │         │
                           (2, 3)───(2, 4)───(2, 5)────(2, 6)────(2, 7)───(2, 8)
                           │        │        │         │         │        │
                           │        │        │         │         │        │
                  (3, 2)───(3, 3)───(3, 4)───(3, 5)────(3, 6)────(3, 7)───(3, 8)───(3, 9)
                  │        │        │        │         │         │        │        │
                  │        │        │        │         │         │        │        │
         (4, 1)───(4, 2)───(4, 3)───(4, 4)───(4, 5)────(4, 6)────(4, 7)───(4, 8)───(4, 9)───(4, 10)
         │        │        │        │        │         │         │        │        │        │
         │        │        │        │        │         │         │        │        │        │
(5, 0)───(5, 1)───(5, 2)───(5, 3)───(5, 4)───(5, 5)────(5, 6)────(5, 7)───(5, 8)───(5, 9)───(5, 10)───(5, 11)
         │        │        │        │        │         │         │        │        │        │
         │        │        │        │        │         │         │        │        │        │
         (6, 1)───(6, 2)───(6, 3)───(6, 4)───(6, 5)────(6, 6)────(6, 7)───(6, 8)───(6, 9)───(6, 10)
                  │        │        │        │         │         │        │        │
                  │        │        │        │         │         │        │        │
                  (7, 2)───(7, 3)───(7, 4)───(7, 5)────(7, 6)────(7, 7)───(7, 8)───(7, 9)
                           │        │        │         │         │        │
                           │        │        │         │         │        │
                           (8, 3)───(8, 4)───(8, 5)────(8, 6)────(8, 7)───(8, 8)
                                    │        │         │         │
                                    │        │         │         │
                                    (9, 4)───(9, 5)────(9, 6)────(9, 7)
                                             │         │
                                             │         │
                                             (10, 5)───(10, 6)

Inilah cara Anda mendapatkan perangkat yang berisi operasi CZ yang diizinkan:

qubits = cirq.google.Bristlecone.qubits
allowed = {cirq.CZ(a, b)
           for a in qubits
           for b in qubits
           if a.is_adjacent(b)}

Set memiliki 121 elemen di dalamnya, dan agak acak apakah Anda mendapatkan CZ (x, y) atau CZ (y, x) di set, jadi saya tidak akan menyertakan cetakan set di sini.

Kendala tambahan yang perlu diingat adalah bahwa Anda tidak dapat melakukan dua CZs di samping satu sama lain secara bersamaan. Cirq memperhitungkan hal ini saat membuat sirkuit yang ditargetkan untuk Bristlecone. Sebagai contoh:

import cirq
device = cirq.google.Bristlecone
a, b, c, d, e = device.col(6)[:5]
circuit = cirq.Circuit.from_ops(
    cirq.CZ(a, b),
    cirq.CZ(c, d),
    cirq.CZ(a, b),
    cirq.CZ(d, e),
    device=device)
print(circuit)
# (0, 6): ───@───────@───
#            │       │
# (1, 6): ───@───────@───
# 
# (2, 6): ───────@───────
#                │
# (3, 6): ───────@───@───
#                    │
# (4, 6): ───────────@───

Dua operasi pertama terhuyung karena mereka adalah CZ yang berdekatan, tetapi dua yang kedua tidak karena tidak.

Craig Gidney
sumber
Penggunaan API yang bagus! Solusi Anda lebih baik daripada solusi saya! :)
Awal
Awal, solusi Anda juga benar, dan terser. Circ telah memilih untuk memutar susunan persegi panjang sebesar 45 derajat yang agak menyimpang
rrtucci
1
Oh begitu. Mereka melakukannya karena keterbatasan menggambar ascii
rrtucci
Google memiliki komputer kuantum?
user1271772
@rrtucci ASCII mencakup garis diagonal (/, \). Pilihan koordinat lebih sesuai dengan meminimalkan kesulitan berbagai tugas, seperti menebak apakah qubit (a, b) ada atau tidak. Untuk tugas-tugas itu, bentuk berlian hanya rumit di dekat perbatasan, sedangkan pola kotak-kotak rumit di seluruh.
Craig Gidney
9

Dari posting blog asli yang menyajikan chip kuantum Bristlecone, berikut adalah peta konektivitas chip tersebut:

Peta konektivitas Bristlecone

0

connectivity_map = {
    i : [i + offset
         for offset in (-6, -5, 5, 6) # values deduced by taking a qubit in the middle of
                                      # chip and computing the offsets between the choosen
                                      # qubit and it's 4 neighbours
         if ((0 <= i+offset < 72)             # the neighbour should be a valid qubit
             and ((i+offset) // 6 != i // 6)) # the neighbour should not be on the same line
    ]
    for i in range(72)
}

Peringatan : ungkapan di atas benar-benar tidak diverifikasi. Tampaknya berfungsi untuk qubit pertama, tampaknya logis bagi saya, tetapi terserah kepada Anda untuk memeriksa bahwa peta itu 100% benar.

Peringatan 2 : Posting blog Google tidak berbicara tentang orientasi koneksi antara qubit. Peta konektivitas yang diberikan di atas mengasumsikan bahwa koneksi bersifat bilateral.

Awal
sumber
3

Versi PyQuil saat ini menyediakan objek "ISA" yang menampung informasi yang Anda inginkan tentang prosesor kuantum Rigetti, tetapi tidak diformat seperti yang Anda minta. Saya seorang programmer Python yang buruk, jadi Anda harus memaafkan ketidakakuratan Pythonic saya — tetapi inilah cuplikan yang akan mengambil device_namedan memformat ulang pyQuil ISA ke dalam salah satu kamus Anda:

import pyquil.api as p

device_name = '19Q-Acorn'

isa = p.get_devices(as_dict=True)[device_name].isa
d = {}
for qubit in isa.qubits:
    l = []
    for edge in isa.edges:
        if qubit.id is edge.targets[0]:
            l += [edge.targets[1]]
        if qubit.id is edge.targets[1]:
            l += [edge.targets[0]]
    if not qubit.dead:
        d[qubit.id] = l

print(d)

Seperti dalam kasus Google, gerbang dua-qubit asli yang biasanya tersedia pada prosesor kuantum Rigetti adalah a CZ, yang (1) dua arah (†) dalam arti yang CZ q0 q1sama dengan CZ q1 q0dan (2) mudah diubah menjadi salah satu pilihan Anda CNOTs dengan menggulung target dengan gerbang Hadamard.

† - Pelaksanaan fisik dari CZgerbang dalam arsitektur superkonduktor yang diserahkan, yang mengapa Anda sering melihat deskripsi arsitektur termasuk CZ q0 q1tetapi tidak CZ q1 q0. Ini adalah singkatan di mana qubit berpartisipasi di mana setengah dari interaksi fisik, bahkan jika hasilnya (mengabaikan efek kebisingan) sama dengan pemesanan.

Eric Peterson
sumber