Jalankan simulasi kuantum dalam QDK ekstensi untuk Visual Studio Code

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

  1. QDK Instal ekstensi VS Code.
  2. Buka Q# file (.qs) atau OpenQASM (.qasm).
  3. 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.

Cuplikan layar pengaturan noise global Q#Pauli untuk ekstensi QDK di VS Code.

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;
}

Cuplikan layar histogram tanpa kebisingan dan puncak di mana semua qubit adalah nol atau semua qubit adalah satu.

Pada tingkat kebisingan 1% bit-flip, hasilnya mulai menyebar. Pada 25%, histogram tidak dapat dibedakan dari kebisingan murni.

Cuplikan layar histogram dari program Q# dengan laju kebisingan bit-flip 1% dan 25%.

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;
}

Cuplikan layar hasil histogram saat 5% kebisingan bit-flip dimulai setelah alokasi kubit.

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;
}

Cuplikan layar hasil histogram saat kebisingan bit-flip 5% mulai tepat sesaat sebelum pengukuran.

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]);
...