1. Ana sayfa
  2. İçerik planı
  3. save_statevector talimatı · Qiskit
Qiskit · simülasyon ve Aer

Save_statevector — devreye gömülü tam genlik kaydı

QuantumCircuit.save_statevector, devrenin o anki kuantum durumunu — ölçüm histogramına indirgenmeden — simülatör sonuç ağacına yazdıran bir talimat ekler. Bu sayfa yalnızca bu tek araca odaklanır; çoklu snapshot, shot ile birlikte düşünme ve genel mimari için snapshot sistemleri sayfasına dönün. Tam genlik yürütme fikri statevector simülasyonu başlığında, Aer seçenekleri Aer simülatörü sayfasında tutulur — burada etiket, kalıcılık, ölçüm sırası ve quantum_info.Statevector ile kıyaslama işlenir.

  • Tür: SaveStatevector talimatı
  • Okuma: Aer method="statevector" ile anlamlı
  • Risk: etiket çakışması · transpile sırası

Talimatın yeri ve işlevi

save_statevector, kapı zincirine benzer biçimde devre nesnesine eklenir; fakat ünite değildir — kuantum durumunu döndürmez, yalnızca “bu noktada genliği kaydet” diye işaretler. Yürütme sırasında simülatör, o ana kadar uygulanmış ünitelerin bileşiminin etkisini taşıyan vektörü üretir ve talimatın etiketiyle sonuç yapısına iliştirir. Bu yüzden aynı devrede birden fazla save_statevector kullanmak, zaman çizelgesinde birden çok “fotoğraf noktası” demektir.

Talimat ve kapı ayrımı

Devre diyagramında görsel olarak “ekstra kutu” gibi durabilir; mantıksal olarak ise gözlemlenebilir bir kapı değildir. Transpile veya optimizasyon geçişlerinde bu ayrımın nasıl ele alındığını her zaman doğrulamak gerekir — aksi halde kayıt beklenmedik bir kapı sırasına kayabilir.

Kapsam uyarısı Bu sayfa tek talimatın semantiğine odaklanır; çoklu etiket yönetimi ve shot etkileşiminin tam tablosu snapshot sistemleri başlığında tutulur.

Etiket ve kalıcılık (persist)

label bağımsız değişkeni, sonuç ağacında bu kaydı bulmak için kullanılan anahtardır; anlamlı ve benzersiz dizgiler seçmek, hem hata ayıklamayı hem otomasyonu kolaylaştırır. Sürüme göre persist gibi ek bayraklar bulunabilir: özetle, talimatın inverse veya compose işlemlerinde nasıl davranacağını kontrol eder. Yanlış varsayılanla birleştirilmiş devrelerde snapshot’ın “kaybolması”, sessizce yanlış regresyon testine yol açabilir.

Çakışan etiketler

Aynı etiketin iki kez kullanılması, ortamınıza göre üzerine yazma veya çalışma zamanı hatası üretebilir; üretim kodunda etiketleri programatik üretin ve çakışma denetimi yapın.

Aer yöntemi ve sonuç ağacı

Tam genlik amplitüdlerini okumak için Aer’de çoğu zaman method="statevector" yolu seçilir; başka yöntemlerde aynı talimatın desteklenmemesi veya farklı soyutlama ile raporlanması mümkündür. Sonuç nesnesinden veriyi çekme yolu (örneğin result.data veya deney dizini) Qiskit sürümüne göre değiştiği için, burada sabit bir tek satırlık “doğru API” iddiası verilmez — yalnızca “önce yöntemi doğrula, sonra belgedeki anahtar yolunu eşleştir” kuralı vurgulanır.

GPU ile birlikte

Büyük vektörleri GPU’da tutan yürütmelerde bile kayıt boyutu üsteldir; cihaz belleği ve kopyalama maliyeti GPU ivmelendirmesi sayfasındaki uyarılarla birlikte düşünülmelidir.

Ölçümle sıra ve klasik bitler

save_statevector ölçümden önce geldiğinde, kayıt ölçüm rastgeleliği uygulanmadan önceki genliği yansıtır; ölçümden sonra aynı talimatı koymak çoğu zaman anlamsız veya hata vericidir çünkü durum dalga fonksiyonu olarak tam genlikte kalmamış olabilir. Klasik bitlere yazılan histogram ile snapshot verisi farklı kanallardadır — birini diğerinin yerine kullanmayın. Ölçüm mantığı sayfasındaki talimat sırası sezgisi burada da geçerlidir.

Shot sayısı

Ölçüm içeriyorsanız histogram shot ile büyür; snapshot verisi de shot başına tekrarlanır. Maliyet planlaması için shot mantığı sayfasına başvurun.

quantum_info ile çevrimdışı karşılaştırma

Aynı ünite bloğunun çıktısını Aer’e göndermeden Statevector.from_instruction ile üretmek, regresyon için güçlü bir referanstır: snapshot’ın döndürdüğü genlikle sayısal olarak örtüşmelidir (tolerans ve sıra farklarını hesaba katarak). Bu desen, statevector simülasyonu sayfasındaki nesne odaklı anlatımı tamamlar; burada yalnızca “Aer snapshot = uçtan uca yürütme + kayıt” olduğu vurgulanır.

Kısmi devreler

Yalnızca bir alt devreyi from_instruction ile çevirirken dikkat: tam devredeki dolanıklık ve yardımcı kübitler olmadan üretilen vektör, Aer’de tam devreyle kaydedilen vektörle aynı olmayabilir.

Snapshot mimarisine köprü

save_statevector, daha geniş snapshot ailesinin bir üyesidir; save_density_matrix veya olasılık kayıtları gibi alternatifler aynı tasarım alanında düşünülür. Hangi kaydın hangi fiziksel soruya cevap verdiğini planlarken tek talimat yerine “kayıt haritası” çıkarmak faydalıdır — o haritanın çerçevesi snapshot sistemleri sayfasında anlatılır.

Eski API hatırlatması

Tarihsel Snapshot sınıfından bu talimata geçişte, ders notlarını güncellerken yalnızca adı değil sonuç ağacı yolunu da güncellediğinizden emin olun.

Dirac notasyonu ve normalizasyon

Paul Dirac’ın ket–bra notasyonu, tam genlik simülasyonunda gördüğünüz vektörün matematiksel iskeletidir: olasılıklar çoğu zaman genliğin mutlak karesiyle okunur; bu yüzden genliğin normunun birliğe normalize edilmesi postülatla uyumludur. Küresel faz çarpanı olasılıkları değiştirmediğinden, iki kaydın bileşenleri farklı fazla görünse bile aynı fiziksel durumu temsil edebilir — kıyaslama yaparken faz farkını bilinçli ele almak gerekir. Bu kısa not, Aer’in döndürdüğü sayısal diziyi yorumlarken hatırlatıcıdır; tam postülat zinciri sitedeki mekanik başlıklarda tutulur.

Bağlamda tutmak

Burada amaç fizik dersi vermek değil; snapshot çıktısını okurken hangi soyutlamanın paydaş olduğunu netleştirmektir.

Kod laboratuvarı

İlk blok, ölçümden önce tek bir save_statevector içerir. İkinci blok, aynı ünite öncesi genliği quantum_info ile çevrimdışı üretir; sayıların örtüşmesi beklenir (yuvarlama toleransı ile). Sonuç çıktısını ayrıştırma adımı sürümünüze bırakılmıştır.

save_sv_then_measure.py Python
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.save_statevector(label="pre_meas")
qc.measure_all()

result = AerSimulator(method="statevector").run(qc, shots=8, seed_simulator=5).result()
print(result)
qiskit-aer Önce kayıt · sonra ölçüm UTF-8 · LF
save_sv_vs_qi_reference.py Python
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

sub = QuantumCircuit(2)
sub.h(0)
sub.cx(0, 1)

ref = Statevector.from_instruction(sub)
print("QI referans:", ref)
qiskit Aer snapshot ile kıyas · toleranslı eşleştirme UTF-8 · LF

İleri okuma ve özet

save_statevector, tam genlik ara durumları Aer sonuç ağacına bağlamanın doğrudan yoludur; etiket, yöntem ve ölçüm sırası üçlüsü olmadan yorumlanamaz. Geniş mimari, shot maliyeti ve çoklu kayıt için snapshot sayfasına; nesne tabanlı alternatif için statevector sayfasına dönün.

Özet save_statevector bir ünite değil, devre içi tam genlik kayıt talimatıdır; Aer’de anlamlı okuma için uygun yöntem ve sonuç API’si seçilmelidir. Ölçümle sıra karıştırılmamalı; çevrimdışı Statevector.from_instruction ile sayısal doğrulama güçlü bir taban çizgisidir.