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

Transpiler pipeline — soyut devreyi hedef mimariye bağlayan derleyici omurgası

Transpile, kuantum bilgisayar mimarisini yazılım üzerinden kontrol etmenin ana kapısıdır: kullanıcı QuantumCircuit ile mantıksal bir program yazar; transpiler bu programı seçilen hedefin fiziksel gerçekliğine indirger — izin verilen kapılar, qubit bağlanırlığı, süreler ve hata bütçesi. Bu sayfa, boru hattının neden var olduğunu, hangi bilgileri Target üzerinden okuduğunu ve evrelerin birbirini nasıl sıraladığını çizer. Ayrıntılı taban kümesi, yerleşim seçimi, yönlendirme, SWAP ekleme ve zamanlama kardeş sayfalarda açılır; burada amaç, o sayfaları bir arada okuyabileceğiniz çerçeveyi kurmaktır.

  • Girdi: soyut devre · Çıktı: hedefe uygun fiziksel devre
  • Ara temsil: DAG ve bağımlılık grafiği
  • Politika: preset pass manager + optimization_level

Kavram haritası ve yazılım–mimari köprüsü

Klasik derleyicide olduğu gibi, kuantum tarafında da kaynak ile makine kodu arasında bir dönüşüm zinciri vardır. Qiskit'te kaynak, çoğu zaman soyut kapılar ve ideal topoloji varsayımlarıyla yazılmış bir QuantumCircuit'tir; makine kodu ise belirli bir backend'in native kapı seti ve coupling map ile uyumlu, süre ve kaynak kısıtlarını dikkate alan bir devredir. Transpiler pipeline, bu dönüşümün yürütme motorundan ayrı tutulması sayesinde aynı algoritma kodu farklı cihazlara taşınabilir; değişen şey hedefin Target tanımıdır.

Bu sayfanın sınırı

Burada tek bir kapının nasıl rzsxrz zincirine açıldığı, hangi yönlendirme algoritmasının daha az SWAP ürettiği veya darbe zamanlamasının nasıl çizildiği işlenmez; bunlar sırasıyla taban kapıları, kapı ayrıştırması, yönlendirme, SWAP ekleme ve zamanlama sayfalarına bırakılır. Amaç, boru hattının mimari rolünü ve hangi soruya hangi katmanın cevap verdiğini netleştirmektir.

Backend katmanının kendisi backend mimarisi ve coupling map başlıklarında işlendi; transpiler o bilgiyi tüketen taraftır. Devre modeli tarafındaki soyutlama ve optimizasyon mantığı ise devre yapısı ile devre optimizasyonu sayfalarında kalır — transpile öncesi ve sonrası optimizasyonların hedefe göre farklı etki ettiğini akılda tutmak gerekir.

Mimari özet Soyut devre → (opsiyonel ön işleme) → hedefe göre preset pass zinciri → fiziksel devre. Zincirin her halkası bir pass'tir; pass'lerin sırası ve içeriği hedef ve optimizasyon politikasının birleşimidir.

Ara temsil: mantıksal ve fiziksel DAG

Transpiler, devreyi doğrudan “kapı listesi” üzerinde sınırlı biçimde dönüştürür; içeride çoğu iş yönlendirilmiş asiklik graf (DAG) üzerinde yürür. Düğümler kapıları veya diğer işlemleri temsil eder; kenarlar qubit başına veri bağımlılığını taşır. Bu sayede aynı qubit üzerinde kapıların sırası korunur, paralelleştirilebilir bölgeler ayırt edilir ve optimizasyon geçişleri denklik altında güvenli kalır.

Mantıksal ve fiziksel ayrımı

Erken evrelerde qubit kimlikleri algoritmanın mantıksal indekslerine karşılık gelir; yerleşim (layout) seçildikten sonra aynı soyut qubit, donanımdaki belirli bir fiziksel qubit'e bağlanır. Routing ve SWAP aşamaları bu eşlemenin korunması veya yeniden düzenlenmesi için çalışır. Bu ayrım, “transpile sonrası devrede qubit 2 neden donanım haritasında 5'e düştü?” sorusunun cevabını taşır: boru hattı, soyut uzayı fiziksel topolojiye projekte eder.

Denklik ve metadata

Bazı pass'ler kapıları sadeleştirirken birimsel denklik korunur; bazıları ise zamanlama veya donanım modellemesi için ek bilgi ekler. Kullanıcı tarafında barrier gibi akış ipuçları, planlama ve görselleştirme için korunabilir; bunların semantik etkisi bariyer ve akış kontrolü sayfasında ayrıntılandırılmıştır.

Target, kısıtlar ve tek kaynak disiplini

Modern Qiskit'te hedef donanımın “sözlüğü” Target nesnesinde toplanır: hangi kapı hangi qubit veya çift üzerinde tanımlı, süre ve hata tahminleri nedir? Transpile çağrısı bir backend verdiğinizde, preset pass manager bu sözlüğü okuyarak taban kümesini, yönlendirilebilir kenarları ve maliyet tahminlerini tek çatı altında tutar. Bu tek kaynak disiplini, aynı devrenin farklı makinelerde farklı ama tutarlı biçimde genişlemesini sağlar.

Yazılım üzerinden mimari kontrol

Target yalnızca statik bir liste değildir; canlı kalibrasyonla güncellenen süre ve güvenilirlik bilgileri taşıyabilir. Dolayısıyla “aynı transpile betiği dün de çalışır mı?” sorusunun cevabı, hedefin o anki özelliklerine bağlıdır — bu köprü backend özellikleri ve kalibrasyon verisi sayfalarında genişletilir.

Coupling ve topoloji

İki-qubit kapıların hangi çiftlerde yasal olduğu coupling map ile sabitlenir; transpiler boru hattı, yasal olmayan bir etkileşimi ya SWAP zinciriyle çözülebilir kılar ya da hata verir. Donanım topolojisinin fiziksel arka planı donanım topolojisi sayfasında işlenir; burada yalnızca şu çerçeve yeter: pipeline, topoloji kısıtını pass sırasında uygular.

Klasik evre sırası (yüksek seviye)

Preset boru hatları sürüme göre ince farklılık gösterebilir; fakat kavramsal olarak şu sıra tekrar eder: taban ve ayrıştırma (soyut kapıları hedefin doğal kümesine indirgeme), yerleşim seçimi (mantıksal qubitleri fiziksel yerlere atama), yönlendirme ve SWAP (iki-qubit etkileşimleri topolojiye uyarlama), optimizasyon dalgaları (kısa eşdeğer dönüşümler), zamanlama ve zaman çizelgesi (süre ve çakışma bilinci). Bu evreler tek monolit fonksiyon değil; her biri bir veya birden fazla pass ile temsil edilir.

Neden sıra önemlidir?

Önce yönlendirme sonra taban ayrıştırması gibi ters bir sıra, genelde ya anlamsızdır ya da verimsizdir çünkü önce hangi fiziksel qubit çiftlerinin komşu olacağı bellidir. Pipeline tasarımcıları bu sırayı korumak için pass bağımlılıkları ve sabit şablonlar kullanır. Özel bir derleme stratejisi kuruyorsanız sıranın etkisi pass manager ve özel pass sayfalarında ele alınır.

Layout ve routing ayrımı

Layout, “hangi mantıksal qubit nereye oturacak?” sorusuna cevap verir; routing ise oturduktan sonra “komşu olmayan etkileşimleri nasıl taşıyacağım?” sorusuna. İkisi birlikte kapı sayısı ve derinliği üzerinde belirleyici etkiye sahiptir; ayrıntılı algoritma ve sezgisel tartışma yerleşim seçimi ile yönlendirme dosyalarına bırakılır.

Pass, pass manager ve preset omurgası

Her pass, DAG üzerinde tek bir iyi tanımlı dönüşüm veya analiz adımıdır: örneğin belirli bir kapıyı eşdeğer alt kapılara açmak, tek-qubit rotasyonları birleştirmek veya layout maliyetini değerlendirmek. Pass manager ise bu adımları sırayla veya koşullu dallarla çalıştıran yürütücüdür. generate_preset_pass_manager ailesi, IBM ve topluluk pratiğinde olgunlaşmış varsayılan sıraları hedef + seviye parametreleriyle ön paketler.

transpile(...) sarmalayıcısı

Yüksek seviyede transpile fonksiyonu, preset pass manager'ı sizin yerinize kurar ve çalıştırır; çoğu uygulama için bu yeterlidir. Özel araştırma derleyicileri veya A/B karşılaştırmaları için doğrudan pass manager örneği oluşturmak ise ince ayar ve teşhis gerektirir. İkinci yolun tam açılımı pass manager sayfasındadır.

Çıktı gözlemlenebilirliği

Pipeline çıktısı yalnızca kapı listesi değildir: derinlik, iki-qubit sayısı, tahmini süre dağılımı gibi göstergeler aynı algoritmanın farklı hedeflerdeki maliyet yüzünü ortaya koyar. Bu göstergeleri raporda birlikte vermek, bilimsel tekrarlanabilirlik için şarttır.

Optimization level ve politika sınırı

optimization_level (tipik aralık 0–3), preset içindeki pass yoğunluğunu ve sezgisel arama derinliğini kabaca kodlar: düşük seviye daha hızlı derleme ve daha ham çıktı; yüksek seviye daha agresif sadeleştirme ve layout/routing araması. Bu tek sayı, tüm uygulama optimizasyonunu çözmez — algoritma düzeyindeki eşdeğerlikler hâlâ devre optimizasyonu konusunun parçasıdır.

Maliyet–kalite takası

Yüksek seviye, derleme süresini ve belleği artırabilir; düşük seviye ise donanımda beklenmedik derinlik artışına yol açabilir. Üretim iş yüklerinde genelde orta seviye bir başlangıç noktasıdır; kesin seçim hedef uygulama ve hata bütçesine göre ölçülür. Ayrıntılı tablo ve pratik rehber optimization seviyeleri sayfasında toplanır.

Determinizm, tohum ve raporlama

Birçok layout ve routing sezgiselinde rastgelelik veya bağ koparma (tie-break) vardır. Aynı girdi ve hedefle bile farklı çalıştırmalar, eşdeğer ama farklı kapı sayıları üretebilir. Bu nedenle makale ve üretim loglarında transpile seed ve kullanılan Qiskit sürümü belirtilmelidir; aksi hâlde “aynı kod” iddiası teknik olarak savunulamaz.

Yeniden üretilebilirlik disiplini

Hedef Target verisi zaman içinde değiştiğinde, aynı seed bile farklı sonuç doğurabilir çünkü maliyet matrisi güncellenmiştir. Raporlama şablonu önerisi: devre kaynağı, hedef adı, optimization level, seed, kütüphane sürümü, transpile tarihi ve özet metrikler (derinlik, iki-qubit sayısı).

Pratik kural Transpile çıktısını bir artefakt olarak saklayın; yalnızca kaynak devreyi değil, hedef özeti ve metrikleri de versiyonlayın. Böylece donanım veya kütüphane güncellemeleri sonrası regresyonları izole etmek kolaylaşır.

Kod laboratuvarı

Aşağıdaki bloklar boru hattının somut yüzünü gösterir: preset pass manager ile açıkça zincir kurmak, klasik transpile sarmalayıcısıyla karşılaştırmak ve optimization level'ın metrik üzerindeki etkisini ölçmek. Örnekler yerel FakeManilaV2 üzerinde çalışır; import yolları kurulumunuza göre farklılaşabilir.

preset_pm.py Python
from qiskit import QuantumCircuit
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

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

backend = FakeManilaV2()
pm = generate_preset_pass_manager(optimization_level=2, backend=backend)
tqc = pm.run(qc)

print("Derinlik:", tqc.depth())
print("Kapı dağılımı:", tqc.count_ops())
qiskit Preset pass manager · hedefe bağlı zincir UTF-8 · LF
transpile_wrap.py Python
from qiskit import QuantumCircuit, transpile
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

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

backend = FakeManilaV2()
# transpile, çoğu senaryoda preset pass manager'ı sizin için kurar.
tqc = transpile(qc, backend=backend, optimization_level=2, seed_transpiler=123)
print(tqc)
qiskit transpile · seed_transpiler ile tekrarlanabilirlik ipucu UTF-8 · LF
level_compare.py Python
from qiskit import QuantumCircuit, transpile
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

qc = QuantumCircuit(4)
qc.h(range(4))
qc.cx(0, 1)
qc.cx(2, 3)
qc.cx(1, 3)

backend = FakeManilaV2()
for lvl in (0, 3):
    tqc = transpile(qc, backend=backend, optimization_level=lvl, seed_transpiler=7)
    ops = tqc.count_ops()
    native_two = ("cx", "cz", "ecr", "rzz", "iswap")
    two = sum(ops.get(name, 0) for name in native_two)
    print(f"level {lvl}: depth={tqc.depth()} two_qubit_ops={two} ops={dict(ops)}")
qiskit Politika seviyesi · metrik kıyası UTF-8 · LF

İleri okuma ve özet

Transpiler pipeline, soyut algoritma ile belirli bir kuantum işlemcisinin somut dilini birbirine bağlayan derleyici omurgasıdır. Target tek kaynak olarak kısıtları taşır; DAG üzerindeki pass zinciri bu kısıtları aşamalı biçimde uygular; optimization level ve seed ise politika ile tekrarlanabilirlik düğmeleridir.

Özet Pipeline = hedefe bağlı preset pass dizisi. Soyut devreyi hedefe indirgerken layout, routing ve taban ayrıştırması birlikte çalışır; her biri ayrı sayfada derinleşir. Raporlarda hedef, seviye, seed ve sürüm yazılmadan transpile sonuçları kıyaslanmamalıdır.