1. Ana sayfa
  2. İçerik planı
  3. Donanım topolojisi · Qiskit
Qiskit · transpiler ve donanım eşlemesi

Donanım topolojisi — hangi qubit çiftlerinde iki-qubit işlem yasal?

Donanım topolojisi (coupling topolojisi), işlemcinin fiziksel qubitlerini düğüm, izin verilen iki-qubit etkileşimlerini kenar olarak modelleyen graftır. Transpiler bu grafiği “yasallık tahtası” olarak kullanır: soyut devrede ardışık yazılmış bir cx, yalnızca haritada komşu olan fiziksel çiftlere oturtulabilir; aksi hâlde yer değiştirme veya ek kapılar gerekir. Bu sayfa grafiğin kendisini, CouplingMap nesnesini ve hedeften okuma disiplinini işler. Mantıksal oturma layout seçimi, kenar üzerinde akış yönlendirme ve darbe zamanlaması zamanlama başlıklarında kalır.

  • Veri: kenar listesi veya CouplingMap
  • Okuma: backend.coupling_map ve Target
  • Risk: simülatör–cihaz bağlanıklık farkı

Kavram haritası ve sınırlar

Topoloji sorusu yalnız şudur: hangi fiziksel qubit çiftlerinde doğrudan iki-qubit kapısı tanımlıdır? Cevap, kütüphanenin CouplingMap veya backend nesnesi üzerinden sunduğu kenar listesidir. Bu bilgi, algoritmanın mantıksal sırasından bağımsız bir donanım gerçeğidir; layout ve routing ise bu gerçeğe uyum sağlamak için devreye girer. Boru hattı çerçevesi transpiler pipeline sayfasında özetlenir.

Topoloji ≠ layout ≠ routing

Layout mantıksal indeksleri fiziksel düğümlere oturtur; routing aynı graf üzerinde geçici yer değiştirmelerle yasal komşuluğu sağlar. Topoloji üçüncü bir şey değildir; ikisinin paylaştığı zemindir. Bu yüzden aynı algoritma, farklı çiplerde farklı SWAP yükü üretir; suçlayacağınız katman önce topoloji raporudur.

Bu sayfanın sınırı

SWAP üretim kuralları ve kısmi optimizasyonlar SWAP ekleme sayfasında; kenar başına süre ve hata alanları taban kapıları ve backend özellikleri ile kesişir. Burada öncelik bağlanıklık grafiği okumasıdır.

Mimari özet Topoloji = yasal iki-qubit kenarları. Transpiler önce bunu bilir; layout ve routing bu zeminde oynanır.

İzinli çiftler ve CouplingMap

Qiskit tarafında topoloji çoğu zaman bir CouplingMap örneğiyle temsil edilir: yönlü çiftler listesi, çoğu donanımda her iki yön de kayıtlıdır. Kenar yoksa, o çift için cx veya doğal iki-qubit işlemi doğrudan yürütülemez; ara hareket şarttır. Liste, soyut devredeki indeks adlandırmasından bağımsızdır; eşleme layout ile gelir.

Yönlülük ve simetri

Kütüphane listeyi yönlü tutsa da, süperiletken cihazlarda pratikte her iki yön de tanımlı olabilir. Yine de hedef Target satırında bir yönün süresi veya hatası daha iyi olabilir; bu ayrım routing maliyetini etkiler ve yönlü donanım bölümüyle birleşir.

Çelişen veya eksik harita

Elle yazılan coupling_map listelerinde yazım hatası, kopuk alt graf veya qubit sayısından büyük indeks sık görülür. Üretimde haritayı backend nesnesinden okumak ve birim testle doğrulamak en güvenli yoldur.

Tipik geometriler ve fabrika yardımcıları

CouplingMap statik fabrika yöntemleriyle üretilebilir: çizgi (from_line), halka (from_ring), ızgara (from_grid) ve IBM Quantum literatüründeki heavy-hex örüntüsü (from_heavy_hex). Bunlar gerçek bir çipin tam kopyası olmak zorunda değildir; fakat algoritma ve routing stratejisini topolojiye karşı test etmek için yararlıdır.

Heavy-hex ve parametre sınırı

from_heavy_hex(d, ...) çağrısında d tek sayı olmalıdır; aksi hâlde kütüphane hata verir. Üretilen qubit sayısı ve kenar sayısı d ile hızla büyür; belgelerinizde kullandığınız d değerini kaydedin.

Tam bağlı simülatör illüzyonu

Bazı simülatörler mantıksal olarak her çiftte iki-qubit işlemine izin verir; bu, gerçek cihazın kısıtlı grafiğini maskeleyebilir. Üretim öncesi mutlaka hedef coupling ile yeniden transpile edin.

Graf mesafesi ve maliyet sezgisi

CouplingMap.distance(i, j) en kısa yol uzunluğunu verir; komşu değilse değer birden büyür. Bu, routing için alt sınır sezgisi sağlar: uzak çiftler arasında sık etkileşim gereken bir devre, aynı algoritma genişliğinde bile daha derin transpile çıktısı üretir. Çap ve derece dağılımı, algoritma sınıfının donanıma uygunluğu hakkında hızlı bir ön okumadır.

Kökler ve dar boğazlar

Yüksek dereceli bir düğüm “trafik polisi” gibi paylaşılır; düşük dereceli uçlar ise uzun yürüyüş gerektirir. Bu görüş, neden bazı layout skorlarının grafik merkeziyetine benzediğini sezdirir; skor formülleri layout seçimi sayfasında işlenir.

Mesafe tek başına yeterli değil

Aynı graf uzunluğunda birden fazla eşderece yol olabilir; routing sezgiselleri hata, kuyruk ve ileri bakışla hangi yolu seçeceğine karar verir. Bu yüzden mesafe yalnızca ilk keşif için kullanılmalıdır.

Backend ve Target üzerinden okuma

BackendV2 yolunda topoloji çoğu zaman backend.coupling_map ile erişilir; aynı bilginin Target içinde kenar başına süre ve hata alanlarıyla zenginleştirilmiş görünümü vardır. Transpiler maliyet modeli ikinci katmana dayanır; yalnızca kenar varlığı birinci katmandır. Okuma disiplini taban kapıları · Target bölümüyle uyumludur.

Sahte backend ve gerçek cihaz

FakeBackend veya GenericBackendV2, gerçek bir cihazın coupling yapısını taklit eder; topoloji testlerini hesapsız yürütmek için idealdir. Kalibrasyon zaman damgası ve özellik okuma fake backend kullanımı ile ilişkilidir.

Ölçüm ve klasik hatlar

Coupling grafiği yalnızca iki-qubit kapıları için anlamlıdır; ölçüm ve klasik kontrol farklı kısıtlar taşır. Devre modeli ölçüm mantığı sayfasında ayrıntılanır.

Deneysel coupling_map ve riskler

transpile çağrısında coupling_map vermek, backend topolojisini geçici olarak değiştirmenize izin verir: algoritma tasarımı, kıyaslama veya “yarın çıkacak çip için erken deneme” için kullanılır. Risk, üretimde yanlışlıkla gerçek cihazdan kopuk bir graf ile derlemek ve sahada sessizce kötü sonuç almaktır.

Backend ile çelişen harita

backend ve coupling_map birlikte verildiğinde, ikinci argümanın önceliği veya birleşim kuralı sürüme göre değişebilir. Deneysel betiklerde hangi nesnenin kazanacağını açıkça belgeleyin.

Taban ile birlikte düşünmek

Dar bir basis_gates listesi ile geniş bir coupling haritası kombinasyonu, yürütülebilir ama verimsiz transpile üretebilir. Taban sözleşmesi kapı ayrıştırması ile birlikte okunmalıdır.

Tekrarlanabilirlik ve raporlama

Yayınlanan bir sonuçta topoloji bilgisi eksikse, aynı algoritma farklı çiplerde yeniden üretilemez. Makale veya ürün notunda en azından: qubit sayısı, kenar sayısı, örnek bir çift listesi veya CouplingMap özeti, backend adı ve sürümü yazılmalıdır. Rastgele routing içeren pass'ler için seed_transpiler sabitlemesi optimization seviyeleri ile birlikte anılır.

Görselleştirme

Küçük grafler elle çizilebilir; büyük çiplerde otomatik çizim veya dışa aktarma hatayı azaltır. Önemli olan, okuyucunun hangi çiftlerin yasak olduğunu bir bakışta görebilmesidir.

Sürüm ve API değişimi

Backend soyutlama sınıfları ve coupling erişim yolları sürümler arasında değişebilir; betiklerinizi tek modülde toplayıp yükseltme notu tutmak taşınabilirliği artırır.

Pratik kural Her deneyde coupling özeti + tohum + backend kimliği; üretimde yalnız backend grafiği, elle harita yalnız test.

Kod laboratuvarı

Örnekler çekirdek Qiskit ile çalışır: CouplingMap fabrikaları, mesafe okuma ve aynı mantıksal devre için farklı topolojilerde transpile kıyası. Sürümünüze göre import yollarını resmi belgeyle doğrulayın.

coupling_line.py Python
from qiskit.transpiler import CouplingMap

cm = CouplingMap.from_line(6)
print("qubit sayısı:", cm.size())
print("0-5 mesafe:", cm.distance(0, 5))
print("örnek kenarlar:", list(cm.get_edges())[:6])
qiskit CouplingMap.from_line · distance UTF-8 · LF
heavy_hex_preview.py Python
from qiskit.transpiler import CouplingMap

# d tek pozitif tam sayı olmalı (ör. 3 → 19 qubit heavy-hex iskeleti).
d = 3
cm = CouplingMap.from_heavy_hex(d, bidirectional=True)
print("d =", d, "qubit:", cm.size(), "kenar:", len(list(cm.get_edges())))
print("0-1 mesafe:", cm.distance(0, 1))
qiskit from_heavy_hex · boyut özeti UTF-8 · LF
topology_transpile_compare.py Python
from qiskit import QuantumCircuit, transpile
from qiskit.transpiler import CouplingMap

qc = QuantumCircuit(3)
qc.cx(0, 2)

basis = ["cx", "rz", "sx", "id"]
layout_fix = [0, 1, 2]  # mantıksal i → fiziksel layout_fix[i]

line = CouplingMap.from_line(3)
ring = CouplingMap.from_ring(3)

t_line = transpile(
    qc,
    coupling_map=line,
    basis_gates=basis,
    initial_layout=layout_fix,
    optimization_level=3,
    seed_transpiler=0,
)
t_ring = transpile(
    qc,
    coupling_map=ring,
    basis_gates=basis,
    initial_layout=layout_fix,
    optimization_level=3,
    seed_transpiler=0,
)

print("çizgi :", dict(t_line.count_ops()), "depth", t_line.depth())
print("halka :", dict(t_ring.count_ops()), "depth", t_ring.depth())
qiskit aynı devre · farklı topoloji UTF-8 · LF

İleri okuma ve özet

Donanım topolojisi, transpiler'ın yasallık zemini olarak coupling grafiğidir. Kenar listesini okumak, mesafe ve geometri sezgisi kazanmak ve sonuçları raporlamak, layout ve routing tartışmalarından önce gelen disiplindir. Simülatörün tam bağlılığı ile gerçek çipin kısıtlılığı arasındaki farkı her zaman belgeleyin.

Özet Topoloji = yasal iki-qubit kenarları. CouplingMap ile oku, mesafe ile sez, raporda grafiği açıkla; routing detayına kardeş sayfalarda in.