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.
Ekstensi MicrosoftQuantum Development Kit (QDK) untuk Visual Studio Code (VS Code) secara otomatis menjalankan program Q# dan OpenQASM pada simulator sparse lokalnya.
Artikel ini menjelaskan cara menjalankan program pada simulator lokal dan cara menambahkan noise ke simulasi PauliQ# Untuk menggunakan simulator lain QDK dari Python, lihat Menjalankan simulasi kuantum dengan QDKPython paket.
Cara kerja simulator lokal
Simulator sparse hanya menyimpan amplitudo bukan nol dari keadaan kuantum. Ketika sebagian besar amplitudo dasar komputasi adalah nol, representasi ini menggunakan lebih sedikit memori dan dapat mensimulasikan beberapa program dengan lebih banyak qubit daripada simulator status penuh, yang menyimpan setiap amplitudo.
Keuntungan performa tergantung pada apakah keadaan kuantum tetap jarang dalam basis komputasi. Untuk informasi selengkapnya, lihat Jaques dan Häner (arXiv:2105.01533).
Menjalankan program kuantum di VS Code
- QDK Instal ekstensi VS Code.
- Buka Q# file (
.qs) atau OpenQASM (.qasm). - Pilih Jalankan dari lensa kode di awal file atau di atas operasi Q#
Main.
Output simulasi muncul di VS Code terminal. Untuk Q# program, pilih Debug untuk memeriksa status kuantum program saat berjalan.
Tambahkan Pauli kebisingan ke Q# simulasi
sparse simulator mendukung noise untuk program-program Q# dalam ekstensi QDK. Gunakan ConfigurePauliNoise untuk mengatur probabilitas Pauli kesalahan $X$, $Y$, dan $Z$ dalam suatu program. Pengaturan QDK ekstensi juga mendukung model kebisingan global Pauli .
Note
Anda tidak dapat menambahkan model kebisingan ke simulasi OpenQASM di ekstensi QDK. Untuk membangun model kebisingan khusus operasi untuk Q# atau OpenQASM program, gunakanPythonQDKpaket dan NoiseConfig API.
Tambahkan Pauli kebisingan di pengaturan VS Code
- Di VS Code, atur kebisingan global Pauli untuk Q# program dalam pengaturan pengguna Q#> Simulasi:Pauli Kebisingan untuk ekstensi QDK.
Pengaturan kebisingan berlaku untuk hasil histogram dari semua gerbang, pengukuran, dan qubit dalam semua program Q# di VS Code.
Tanpa kebisingan, histogram untuk program sampel ini GHZ menunjukkan $\ket{00000}$ untuk sekitar setengah pengukuran dan $\ket{11111}$ untuk setengah lainnya.
import Std.Diagnostics.*;
import Std.Measurement.*;
operation Main() : Result[] {
let num = 5;
return GHZSample(num);
}
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Pada tingkat kebisingan 1% bit-flip, hasilnya mulai menyebar. Pada 25%, histogram tidak dapat dibedakan dari kebisingan murni.
Menambahkan Pauli kebisingan ke program individual Q#
Gunakan ConfigurePauliNoise untuk mengatur atau mengubah model kebisingan program Q# dan mengontrol kapan dan di mana kebisingan terjadi.
Note
Pengaturan VS Code menambahkan noise ke semua program Q#, tetapi ConfigurePauliNoise mengambil alih pengaturan tersebut untuk program yang memanggilnya.
Di program sebelumnya, tambahkan kebisingan segera setelah alokasi qubit:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all subsequent operations.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Untuk menerapkan kebisingan hanya pada operasi pengukuran, atur model kebisingan segera sebelum pengukuran dan hapus setelahnya:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies only to the measurement operation.
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Untuk mengubah atau menghapus konfigurasi kebisingan di titik yang berbeda dalam program Anda, panggil ConfigurePauliNoise beberapa kali. Misalnya, terapkan 5% kebisingan bit-flip ke gerbang Hadamard dan kemudian hapus konfigurasi kebisingan untuk sisa program.
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// Noise applies to the H operation.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
// Clear the noise settings.
ConfigurePauliNoise(0.0, 0.0, 0.0);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Fungsi kebisingan lainnya Q#
ConfigurePauliNoise mendukung Pauli model kebisingan apa pun. Gunakan fungsi dan operasi ini dari namespace Std.Diagnostics untuk mengonfigurasi atau menerapkan kebisingan:
| Function | Description | Contoh |
|---|---|---|
ConfigurePauliNoise |
Mengatur parameter noise Pauli untuk simulasi. Berikan salah satu dari probabilitas kesalahan Pauli $X$, $Y$, dan $Z$ atau Pauli model kebisingan. Konfigurasi berlaku untuk semua gerbang, pengukuran, dan qubit berikutnya dalam Q# program dan mengambil alih pengaturan kebisingan VS Code ekstensi. Panggilan berikutnya mengambil alih konfigurasi sebelumnya. | ConfigurePauliNoise(0.1, 0.0, 0.5)atau ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Mengembalikan model kebisingan dengan hanya kesalahan $X$ pada probabilitas yang ditentukan. | 10% kebisingan bit-flip:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Mengembalikan model kebisingan dengan hanya kesalahan $Z$ Pauli pada probabilitas yang ditentukan. | 10% kebisingan flip fase:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Mengembalikan model kebisingan dengan probabilitas yang sama untuk kesalahan Pauli $X$, $Y$, dan $Z$. | 6% mendespolarisasi kebisingan:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Mengembalikan model dengan probabilitas kesalahan nol. Teruskan ini ke ConfigurePauliNoise untuk menghapus konfigurasi kebisingan saat ini. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Menerapkan kebisingan yang dikonfigurasi ke satu qubit selama simulasi. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |