Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'estensione MicrosoftQuantum Development Kit (Visual Studio Code) per VS Code (QDK) esegue automaticamente i programmi Q# e OpenQASM sul proprio simulatore sparse locale.
Questo articolo illustra come eseguire programmi nel simulatore locale e come aggiungere Pauli rumore alle Q# simulazioni. Per usare gli altri QDK simulatori di Python, vedere Eseguire simulazioni quantistiche con il QDKPython pacchetto .
Funzionamento del simulatore locale
Il simulatore di tipo sparse archivia solo le ampiezze non pari a zero di uno stato quantistico. Quando la maggior parte delle ampiezze di base di calcolo è zero, questa rappresentazione usa meno memoria e può simulare alcuni programmi con più qubit rispetto a un simulatore di stato completo, che archivia ogni ampiezza.
Il vantaggio delle prestazioni dipende dal fatto che lo stato quantistico rimanga sparso nella base di calcolo. Per altre informazioni, vedere Jaques e Häner (arXiv:2105.01533).
Eseguire un programma quantistico in VS Code
- Installare l'estensioneQDK per VS Code.
- Aprire un Q# file (
.qs) o OpenQASM (.qasm). - Selezionare Esegui da CodeLens all'inizio del file o sopra l'operazione Q#
Main.
L'output della simulazione viene visualizzato nel VS Code terminale. Per Q# i programmi, selezionare Debug per controllare lo stato quantistico del programma durante l'esecuzione.
Aggiungere Pauli rumore alle Q# simulazioni
Il simulatore sparse supporta Pauli rumore per Q# programmi nell'estensione QDK. Utilizzare ConfigurePauliNoise per impostare le probabilità di Pauli errori $X$, $Y$e $Z$ in un programma. Le impostazioni di QDK estensione supportano anche un Pauli modello di disturbo globale.
Note
Non è possibile aggiungere un modello di disturbo a una OpenQASM simulazione nell'estensione QDK . Per creare modelli di rumore specifici dell'operazione per Q# o programmi QDK, usare il pacchetto PythonNoiseConfig e l'API OpenQASM.
Aggiungere Pauli rumore nelle VS Code impostazioni
- In VS Code, impostare il rumore globale Pauli per Q# i programmi nelle impostazioni utente Q#> Simulazione:Pauli Rumore per l'estensione QDK.
Le impostazioni del rumore si applicano ai risultati dell'istogramma per tutti i gate, le misurazioni e i qubit in Q# in tutti i VS Code programmi.
Senza rumore, un istogramma per questo GHZ programma di esempio mostra $\ket{00000}$ per circa metà delle misurazioni e $\ket{11111}$ per l'altra metà.
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;
}
Con un tasso di rumore bit-flip dell'1%, i risultati iniziano a disperdersi. A 25%, l'istogramma è indistinguibile dal rumore puro.
Aggiungi Pauli rumore ai singoli Q# programmi
Usare ConfigurePauliNoise per impostare o modificare il modello di rumore di un Q# programma e controllare quando e dove si verifica il rumore.
Note
Le VS Code impostazioni applicano rumore a tutti i Q# programmi, ma ConfigurePauliNoise esegue l'override di tali impostazioni per il programma che lo chiama.
Nel programma precedente aggiungere rumore immediatamente dopo l'allocazione del 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;
}
Per applicare il rumore solo all'operazione di misurazione, impostare il modello di rumore immediatamente prima della misurazione e cancellarlo in seguito:
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;
}
Per modificare o cancellare la configurazione del rumore in punti diversi del programma, chiamare ConfigurePauliNoise più volte. Ad esempio, applicare un rumore bit-flip del 5% al gate Hadamard e quindi cancellare la configurazione del rumore per il resto del programma.
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;
}
Altre Q# funzioni di rumore
ConfigurePauliNoise supporta qualsiasi modello di rumore Pauli. Usare queste funzioni e operazioni dallo Std.Diagnostics spazio dei nomi per configurare o applicare il disturbo:
| Function | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Imposta Pauli rumore per una simulazione. Passa le probabilità di Pauli errori $X$, $Y$ e $Z$ o un Pauli modello di disturbo. La configurazione si applica a tutti i gate, le misurazioni e i qubit successivi in un programma Q# ed esegue l'override delle impostazioni di disturbo dell'estensione VS Code. Le chiamate successive sostituiscono le configurazioni precedenti. | ConfigurePauliNoise(0.1, 0.0, 0.5)o ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Restituisce un modello di disturbo con solo Pauli errori $X$ con la probabilità specificata. | 10% rumore di inversione di bit:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Restituisce un modello di disturbo con solo Pauli errori $Z$ con la probabilità specificata. | 10% rumore di inversione di fase:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Restituisce un modello di disturbo con probabilità uguali per Pauli gli errori $X$, $Y$e $Z$. | 6% rumore depolarizzato:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Restituisce un modello con zero probabilità di errore. Passa ConfigurePauliNoise per cancellare la configurazione del rumore corrente. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Applica il rumore configurato a un singolo qubit durante la simulazione. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |