Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Microsoft Quantum Development Kit (QDK) mencakup Python alat untuk mengembangkan dan menguji protokol koreksi kesalahan kuantum (QEC).
qdk.ec Gunakan modul untuk menganalisis kode koreksi kesalahan, membangun protokol yang dapat dieksekusi, memvalidasi deklarasi protokol, dan mempelajari kesalahan sirkuit. Gunakan qdk.simulation untuk menjalankan program logis melalui protokol tersebut.
QDK Memahami alat koreksi kesalahan
QDK Alur kerja koreksi kesalahan menggunakan paket dan modul ini:
| Komponen | Gunakan untuk |
|---|---|
qodec |
Tentukan dan simpan kode, set instruksi, gadget, lapisan, dan protokol QEC lengkap. |
qdk.ec |
Analisis kode dan gadget, buat qodec garis besar, persamaan turunan, dan deklarasi protokol audit. |
qdk.simulation |
Jalankan Quantum Intermediate Representation (QIR) program melalui qodec dan terapkan dekoder. |
qdk.simulation.decoders |
Pilih dekoder sindrom bawaan, lacak bingkai, atau sambungkan ke dekoder opsional deq . |
qdk.qre |
Perkirakan biaya ruang, waktu, dan kesalahan model QEC untuk estimasi sumber daya yang toleran terhadap kesalahan. |
qodec adalah deskripsi formal dari protokol QEC yang dapat dieksekusi. Ini menghubungkan instruksi logis ke sirkuit fisik melalui satu atau beberapa lapisan. Paket qodec mendefinisikan model data ini dan representasinya YAML . Modul ini qdk.ec memperoleh fakta dari model dan memeriksa apakah deklarasinya cocok dengan sirkuitnya.
Untuk informasi selengkapnya, lihat qodec gambaran umum.
Modul qdk.qre memiliki tujuan yang berbeda. Ini memodelkan biaya sumber daya dari skema koreksi kesalahan. Ini tidak menentukan, mengaudit, atau menjalankan qodec gadget. Untuk informasi selengkapnya tentang estimasi sumber daya kuantum di QDK, lihat Apa estimator sumber daya kuantum Microsoft?
qodec Memahami komponen protokol
Komponen berikut menentukan qodec protokol dan mendukung eksekusinya.
| Komponen | Description |
|---|---|
| Kode | Sekumpulan stabilizer statis dan operator logis yang menentukan ruang kode. |
| Set instruksi | Operasi logis atau fisik yang qodec didukung lapisan. |
| Gadget | Sirkuit yang mengimplementasikan instruksi melalui operasi di lapisan bawah berikutnya. |
| Lapisan | Pemetaan dari satu instruksi diatur ke set instruksi tingkat yang lebih rendah. |
| Pengkodean | Koneksi antara blok logis dan sirkuit berhenti pada batas gadget. |
| Periksa | Persamaan paritas yang harus sama dengan nol ketika hubungan yang dinyatakan bertahan. |
| Readout | Persamaan yang memetakan hasil sirkuit dan tanda bingkai ke hasil atau bendera logis. |
| Flag | Bacaan bernama yang melaporkan apakah instruksi memenuhi kondisi penerimaannya. |
| Dekoder | Komponen yang menggunakan bukti sindrom untuk menyimpulkan koreksi dan hasil logis. |
Dapat qodec berisi beberapa lapisan. Lapisan atas dapat menentukan operasi logis melalui blok yang dikodekan. Gadget di lapisan atas dapat memanggil instruksi di lapisan bawah berikutnya. Lapisan bawah berisi operasi fisik yang dijalankan simulator.
Contoh alur kerja protokol
Alur kerja umum memiliki enam langkah. Langkah-langkah berikut menggunakan fungsi dan kelas dari qdk.ec modul.
- Tentukan kode.
qodec.CodeBuat dengan stabilizer dan operator logisPauli. - Analisis kode.
CodeProfileGunakan kelas untuk memeriksa operator logis, menghitung sindrom, dan jarak kode komputasi. - Buat atau muat qodec.
build_qodecGunakan fungsi untuk membuat protokol garis besar, atau memuat yang sudah ada qodec dari YAML. - Selesaikan dan validasi protokol.
filledGunakan fungsi untuk memperoleh persamaan pemeriksaan dan pembacaan yang didukung.auditGunakan fungsi untuk menemukan deklarasi yang tidak konsisten atau tidak lengkap. - Menganalisis kesalahan sirkuit.
GadgetProfileGunakan kelas untuk memeriksa tindakan logis, efek kesalahan, dan jarak gadget. - Jalankan program logis. Kompilasi Q# atau OpenQASM kode ke QIR. Teruskan QIR dan qodec ke
qdk.simulation.run_qir, lalu pilih dekoder dan model kebisingan.
Kode berikut menunjukkan objek utama dalam alur kerja ini:
import qodec
from qdk import ec
from qdk.simulation import run_qir
code = qodec.Code(
"C4",
stabilizers=["X_0 X_1 X_2 X_3", "Z_0 Z_1 Z_2 Z_3"],
x=["X_0 X_1", "X_0 X_2"],
z=["Z_0 Z_2", "Z_0 Z_1"],
)
code_profile = ec.CodeProfile(code)
print("Code distance:", code_profile.distance())
protocol = ec.build_qodec(code, strategy="bare-css/v1", strict=False)
print(ec.audit(protocol))
# Compile a logical program to QIR before you call run_qir.
# results = run_qir(qir, qodec=protocol, shots=100)
Strategi bare-css/v1 dalam contoh ini membuat protokol garis besar sederhana tanpa qubit bendera. Ini membantu Anda memeriksa alur kerja, tetapi tidak menjamin gadget yang toleran terhadap kesalahan. Gunakan analisis jarak gadget sebelum Anda memilih implementasi protokol.
Memisahkan validasi protokol dari analisis kesalahan
Audit protokol dan analisis jarak menilai berbagai aspek protokol QEC.
- Audit protokol memeriksa apakah protokol yang dinyatakan cocok dengan sirkuit dan persamaannya ketika tidak ada kesalahan yang terjadi.
- Analisis jarak menentukan jumlah minimum kesalahan atau kesalahan sirkuit yang diizinkan yang dapat menyebabkan kegagalan logis yang tidak terdeteksi.
audit Gunakan fungsi untuk memeriksa konsistensi tanpa kebisingan. Audit memeriksa aljabar kode, deklarasi instruksi, tindakan gadget, pemeriksaan, pembacaan, bendera, hubungan bingkai, dan referensi antar qodec objek.
Audit yang melaporkan tidak ada masalah tidak menjamin toleransi kesalahan. Sirkuit dapat menerapkan tindakan logis yang benar tanpa kesalahan dan masih gagal setelah satu kesalahan fisik.
CodeProfile.distance Gunakan metode untuk menganalisis kode dan GadgetProfile.distance metode untuk menganalisis setiap implementasi sirkuit.
Sebelum Anda menggunakan protokol untuk simulasi yang bising, jalankan audit protokol dan analisis kode dan jarak gadget.
Memilih strategi konstruksi
Fungsi ini build_qodec mendukung dua strategi konstruksi dasar CSS .
| Strategy | Description |
|---|---|
flagged-css/v1 |
Menggunakan konstruksi yang ditandai CSS dan memilih jumlah bendera dari jarak kode. Strategi ini adalah default. |
bare-css/v1 |
Tidak menggunakan qubit bendera dan melewati perhitungan jarak yang memilih jumlah bendera. Gunakan untuk inspeksi dan pengembangan awal. |
Kedua strategi mencoba membuat instruksi logis ini:
prepare_z_allprepare_x_allsyndromemeasure_z_allmeasure_x_allh_allcx_all
Tidak setiap kode mendukung setiap kandidat. Dengan pengaturan strict=Truedefault , build_qodec menimbulkan kesalahan saat tidak dapat membangun dan memverifikasi instruksi. Dengan strict=False, build_qodec menyimpan instruksi yang didukung dan merekam setiap instruksi yang dilewati dalam qodec metadata.
Pilih tugas Anda berikutnya
- Untuk menyiapkan Python lingkungan, lihat Cara menginstal QDK untuk koreksi kesalahan.
- Untuk menentukan kode dan membuat protokol, lihat Mengembangkan dan memvalidasi protokol QEC.
- Untuk mengkompilasi, mensimulasikan, dan mendekode program logis, lihat Menjalankan dan mendekode program logis.
Untuk buku catatan lengkap yang mengikuti alur kerja lengkap, lihat Mengembangkan dan menguji protokol QEC di QDK repositori.