Kapı ayrıştırması — taban dışı üniteyi hedefin yerel diline matematiksel olarak açmak
Kapı ayrıştırması, soyut bir kuantum işlemini — örneğin h, kontrollü aile, rxx veya yüksek arity bir blok — seçilen hedefin izin verdiği taban üzerinde eşdeğer bir kapı dizisine dönüştürme sürecidir. Bu sayfa transpiler açısından çalışır: hangi pass ailesinin bu işi üstlendiği, tek ve iki-qubit sentezin rolü, parametrik açıların nasıl taşındığı ve doğrulama disiplini. Hangi isimlerin yasal olduğu taban kapıları sayfasında; devre modelindeki genel ayrıştırma kavramı ise devre ayrıştırması başlığında ayrıntılanır.
Kavram haritası ve transpiler içi rol
Transpiler boru hattında kapı ayrıştırması, soyut devreyi henüz topoloji veya zamanlama kısıtlarına taşımadan önce cebirsel dil indirgeme adımıdır. Aynı matematiksel ünite, farklı hedef tabanlarında farklı uzunlukta dizilere açılır; bu yüzden performans kıyasında “hangi taban?” ve “hangi optimizasyon seviyesi?” birlikte raporlanmalıdır. Evre sırasının çerçevesi transpiler pipeline sayfasında; seviye politikası optimization seviyeleri başlığındadır.
Bu sayfanın sınırı
Tam KAK ayrıştırması, süre optimizasyonu veya özel donanım mikrodalga şablonlarının iç matematiği burada kataloglanmaz; amaç, Qiskit kullanıcısının hangi soruları sormalı ve hangi API yüzeyine güvenmeli olduğunu netleştirmektir. Ünite cebiri ve kapı semantiği kapılar ve ünite mantığı sayfasında temellenir.
decompose ile transpile aynı iş değil
QuantumCircuit.decompose çoğu zaman kütüphane tanımı ağacını bir seviye açar; transpile ise backend hedefi, taban, layout ve routing dahil tam derleyiciyi çalıştırır. Ayrıştırma davranışını anlamak için ikisini birlikte düşünün: biri okunabilirlik ve hızlı deney, diğeri yürütülebilir çıktı taahhüdü.
Taban dışından tabana: çeviri ve eşdeğerlik
Hedef bir BackendV2 örneği verildiğinde, transpiler önce soyut kapıları Target sözlüğünde tanımlı işlemlere indirger. Bu çeviri, sabit şablon dizileri ile yapılabileceği gibi eşdeğerlik kütüphanesi veya sentez yoluyla da seçilir; seçim sürüme ve preset politikasına bağlıdır. Kullanıcı açısından kritik olan: çıktının global faz hariç veya ölçüm semantiği açısından beklenen anlamda girdiyle eşleşmesi ve uzunluğun kabul edilebilir kalmasıdır.
Taban kümesi ile uyum
Ayrıştırma her zaman taban kapıları sayfasında anlatılan izinli küme ile tutarlı olmalıdır. basis_gates ile dar zorlama, ayrıştırmanın hangi Euler ailesine veya hangi iki-qubit ismine yaslanacağını değiştirir; hedefle çelişen bir küme seçilirse hata veya aşırı uzun dizi üretilebilir.
Özel tanımlı kapılar
Gate alt sınıfı ile tanımlanan özel bir kapının definition özelliği doluysa, transpiler önce bu tanımı açmaya çalışır; tanım yoksa ünite tabanlı sentez gerekir. Karmaşık kutuların açılması devre ayrıştırması sayfasındaki kara kutu disipliniyle örtüşür.
Tek-qubit ayrıştırma ve Euler aileleri
Tek-qubit tarafında yaygın hedef, rz ile sürekli fazı ayıklayıp genlik taşıyan işi sx / x üzerinden yazmaktır. Bir h veya y kapısı, seçilen Euler ailesine göre kısa bir rotasyon zincirine dönüşür; aynı ünite için birden fazla eşdeğer dizi vardır ve optimizasyon pass'leri bunları kısaltmaya çalışır.
u ailesi ve süreksizlik
Kaynak devrede doğrudan u veya benzeri genel tek-qubit kapılar bulunabilir; taban çevirisi bunları hedefin desteklediği süreksizliklere projekte eder. Parametre bağlama sırası parametrik devreler sayfasıyla ilişkilidir.
Fazın maliyet modeli
Birçok süperiletken yürütümde rz sanal Z olarak ucuz sayılır; yine de toplam süre ve zaman çizelgesi hesabına girer. Fiziksel süre alanları zamanlama başlığında işlenir.
İki-qubit sentez ve doğal iki-qubit köprüsü
İki-qubit üniteyi açmak, algoritmik cx ağını hedefin doğal iki-qubit işlemine — örneğin ecr — indirgemeyi içerir. Bu adım yalnızca isim değişimi değildir; süre ve hata modeli farklı kapı uzunluklarına yansır. İki-qubit sentez, tek-qubit rotasyonlarla birlikte düşünüldüğünde devrenin toplam derinliği ve iki-qubit sayısı üzerinden okunur.
Yönlülük ve taban açılımı
Soyut devrede cx(0,1) ile cx(1,0) aynı ünite olabilir; fakat hedef yalnızca bir yönü ucuz tanımlıyorsa, ayrıştırma diğer yönü ek tek-qubit düzeltmeleriyle açar. Bu etkileşim yönlendirme maliyetinden önce bile kapı sayısını şişirebilir.
Parametrik iki-qubit örnekleri
rxx, cry gibi sürekli açılı iki-qubit kapılar, tabana indirgenirken hem tek hem iki-qubit yaprakları üretir; optimizasyon seviyesi bu yaprakların sonradan birleştirilip sadeleştirilmesini etkiler.
Yüksek arity ve özel kapı şablonları
ccx, mcx veya geniş kontrol ağları doğrudan tabanda bulunmaz; tipik olarak ancilla kullanımı, Toffoli şablonları veya kütüphane özelinde optimize edilmiş ağaçlarla açılır. Ayrıştırmanın seçtiği şablon, toplam devre derinliği ve iki-qubit sayısı üzerinden maliyeti belirler; bu yüzden yüksek arity blokları erken safhada sadeleştirmek sık bir kazançtır.
UnitaryGate ve tam ünite
Küçük boyutta verilen tam ünite, sentez ile tabana yazılır; boyut büyüdükçe maliyet patlar. Araştırma kodunda rastgele ünite enjekte etmek, üretimde ise kontrollü şablon kullanmak genelde daha güvenlidir.
SWAP ve tanıdık üçlüler
Bir swap soyut işlemi, seçilen iki-qubit tabanında üç temel iki-qubit adımı gibi açılır; bu üçlünün hangi isimlerle sayıldığı tabana bağlıdır. Ayrıntılı tartışma SWAP ekleme sayfasında kalır; burada yalnızca ayrıştırma aşamasının uzunluğu üzerindeki etkisini not ediyoruz.
Parametrik açılar ve sembol taşıma
Sembolik açılar içeren bir devre transpile edildiğinde, çoğu senaryoda parametre nesneleri çıktıda korunur; böylece aynı şablon farklı bağlamalarla yeniden kullanılabilir. Ancak belirli optimizasyonlar, sabit olmayan ifadeleri sadeleştirmek için önkoşullar gerektirir; bu yüzden parametrik derinlik kıyasında hem assign_parameters öncesi hem sonrası ölçüm yapmak güvenlidir.
Bağlama sırası ve transpile
Önce bağlayıp sonra transpile etmek ile önce hafif taban çevirisi yapıp sonra bağlamak farklı uzunluk üretebilir; pipeline hangi pass'lerin sembolleri koruduğuna bağlıdır.
Yaklaşık açı toleransı
Sayısal yaklaşık açılar, teoride sonsuz uzunluklu açılım beklentisi doğurur; pratikte tolerans ve kütüphane politikası sonlu bir dizi seçer. Bu konunun devre modeli yüzü devre ayrıştırması içindeki yaklaşık açı bölümüyle hizalanır.
Doğrulama ve tekrarlanabilirlik
Ayrıştırma hatası genelde sessizdir: devre çalışır görünür ama yanlış ünite üretir. Küçük boyutta Operator veya unitary simülasyonu ile eşdeğerlik kontrolü, CI için düşük maliyetli bir güvenlik ağıdır. Büyük devrelerde tam ünite hesaplamak pratik olmayabilir; o zaman alt devre sınırları, altın çıktı kıyası veya rastgele test kullanılır.
seed_transpiler ve determinizm
Rastgele seçim içeren pass'ler aynı girdide farklı uzunluk üretebilir; kıyaslama ve regresyon testlerinde tohum sabitlemek şarttır. Politika optimization seviyeleri ile birlikte okunmalıdır.
Ölçüm ve klasik kontrol
Ünite eşdeğerliği ölçüm içeren tam programa genişletildiğinde dikkatli olun; ölçüm dallanması semantiği ölçüm mantığı sayfasında açılır.
Kod laboratuvarı
Örnekler yalnızca çekirdek Qiskit ile çalışır: basis_gates
ve hafif bir coupling_map ile hedef soyutlanır; böylece
ek paket gerekmez. Kendi ortamınızda FakeBackend veya IBM sağlayıcısı
verildiğinde aynı desen doğrudan transpile(...,
backend=...) çağrısına taşınır.
from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Operator
# Hedefi soyutlamak için taban + topoloji; gerçek projede backend=... kullanın.
BASIS = ["cx", "rz", "sx", "id"]
COUPLE = [[0, 1], [1, 0]]
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
low = transpile(
qc,
basis_gates=BASIS,
coupling_map=COUPLE,
optimization_level=0,
seed_transpiler=0,
)
high = transpile(
qc,
basis_gates=BASIS,
coupling_map=COUPLE,
optimization_level=3,
seed_transpiler=0,
)
print("O0:", dict(low.count_ops()), "depth", low.depth())
print("O3:", dict(high.count_ops()), "depth", high.depth())
print("O0 equiv:", Operator(qc).equiv(Operator(low)))
print("O3 equiv:", Operator(qc).equiv(Operator(high)))
from qiskit import QuantumCircuit, transpile
from qiskit.circuit import Parameter
t = Parameter("t")
qc = QuantumCircuit(1)
qc.rz(t, 0)
out = transpile(
qc,
basis_gates=["cx", "rz", "sx", "id"],
optimization_level=1,
)
print("çıktı parametreleri:", list(out.parameters))
print(out)
from qiskit import QuantumCircuit, transpile
from qiskit.circuit.library import RXXGate
from qiskit.quantum_info import Operator
qc = QuantumCircuit(2)
qc.append(RXXGate(0.7), [0, 1])
out = transpile(
qc,
basis_gates=["cx", "rz", "sx", "id"],
coupling_map=[[0, 1], [1, 0]],
optimization_level=2,
seed_transpiler=0,
)
print("taban içi sayım:", dict(out.count_ops()))
print("equiv:", Operator(qc).equiv(Operator(out)))
İleri okuma ve özet
Kapı ayrıştırması, taban sözleşmesine uygun eşdeğer diziyi üretme sanatıdır: tek-qubit Euler aileleri, iki-qubit sentez, yüksek arity şablonlar ve parametrik taşıma birlikte okunmalıdır. Boru hattının geri kalanı aynı taban üzerinde topoloji ve zamanlama oyununu oynar; ayrıştırma hataları ise genelde erken ve sessiz görünür.
- Taban kapıları — izinli işlem kümesi ve Target.
- Transpiler pipeline, pass manager, optimization seviyeleri.
- Devre ayrıştırması, devre optimizasyon mantığı — soyut model ve maliyet oyunu.
- Layout seçimi, yönlendirme — taban sonrası donanım eşlemesi.
- Özel pass — taban çevirisini etkileyen deneysel geçişler için.