qiskit_noise_learning.aer_executor.AerExecutor
class qiskit_noise_learning.aer_executor.AerExecutor(qasm_simulator: AerSimulator, noise_dict: dict[str, PauliLindbladMap] | None = None, angle_decimals: int = 5, warn_absent: bool = True, root_seed: int | None = None)
Basi: object
Esecutore locale basato su Aer che emula l'interfaccia dell'esecutore di runtime di IBM.
Viene eseguito immediatamente QuantumProgram durante la creazione del job restituito: il risultato è disponibile subito dopo AerRuntimeJob.result() la chiamata.
Iniezione di rumore
Quando noise_dict viene specificato, il rumore di Pauli-Lindblad viene iniettato nei circuiti in corrispondenza delle barriere contrassegnate tramite InsertNoisePass. Samplomatic inserisce tre barriere attorno a ciascun gate racchiuso in un riquadro — a sinistra (L), al centro (M) e a destra (R) — con etichette della forma <pos><idx>@tag=<tag> (ad es. R0@tag=r0). Per impostazione predefinita, il rumore viene iniettato alle barriere ( R di destra), ovvero dopo il gate. Utilizza noise_after=False su InsertNoisePass per agire invece sulle barriere M (rumore prima del gate).
Il formato noise_dict è il seguente:
- Chiavi — etichette dei nomi dei livelli (stringhe, ad esempio
"r0","my_tag"). Ogni chiave deve corrispondere a quella direfun’annotazioneTagutilizzata durante la creazione delQuantumProgram. Viene emesso un avviso (sewarn_absent=True) quando il tag di una barriera contrassegnata non è presente nel dizionario; la barriera viene lasciata così com’è (non viene inserito alcun rumore per quel livello). - Valori — istanze
PauliLindbladMapche descrivono il canale di rumore di Pauli-Lindblad per quel gate. Il valore della mappanum_qubitsdeve essere uguale al numero di qubit presenti sulla barriera corrispondente nel circuito. - Indicizzazione dei qubit — gli indici all’interno della mappa sono locali rispetto all’insieme di qubit della barriera, indipendentemente dalla numerazione globale dei qubit del circuito. L'indice locale si riferisce
iall'i-esimo qubit della barriera in ordine crescente dei qubit fisici, quindi una mappa a livello di dispositivo può essere convertita conPauliLindbladMap.keep_qubits(sorted(qubits)).
Parametri
- qasm_simulator – Il simulatore Aer su cui eseguire i programmi.
- noise_dict – Una mappa che associa i riferimenti alle etichette delle barriere alle mappe di rumore di Pauli-Lindblad. Passare (
Noneimpostazione predefinita) per eseguire l'operazione senza iniezione di rumore. - angle_decimals – Prima della simulazione, gli angoli dei gate vengono arrotondati al multiplo di π/2 più vicino con questa precisione decimale. Ciò impedisce che la deriva dei numeri in virgola mobile ostacoli la simulazione con il metodo di Clifford quando gli angoli sono nominalmente di Clifford.
- warn_absent – Se
True(impostazione predefinita), emette un avviso quando il tag di una barriera contrassegnata non viene trovato innoise_dict. Impostare suFalsequando la copertura parziale dei tag è intenzionale. - root_seed – Seme di base per la generazione di numeri casuali, che copre sia il campionamento degli “shots” che quello dei “twirls”. Anziché essere utilizzato direttamente, genera un seme che ogni chiamata a utilizza per
run()ricavare il seme successivo, in modo che le esecuzioni siano casuali in modo indipendente. Per impostazione predefinita, unNoneseme radice viene generato in modo non deterministico; è disponibile inroot_seedentrambi i modi.
__init__
__init__(qasm_simulator: AerSimulator, noise_dict: dict[str, PauliLindbladMap] | None = None, angle_decimals: int = 5, warn_absent: bool = True, root_seed: int | None = None)
Metodi
Rubrica 1 | Rubrica 2 |
|---|---|
__init__(qasm_simulator[, noise_dict, ...]) | |
run(programma) | Esegue un programma quantistico e restituisce un lavoro completato. |
Attributi
Rubrica 1 | Rubrica 2 |
|---|---|
root_seed | Il seme principale da cui deriva la casualità di ogni esecuzione. |
root_seed
Tipo: int
Il seme principale da cui deriva la casualità di ogni esecuzione.
Passando questo a un nuovo esecutore, si riproduce l'intera sequenza di esecuzioni di tale esecutore. Non si tratta del seme di una singola esecuzione: per riprodurre una singola esecuzione, utilizzare il seme del processo che l'ha generata AerRuntimeJob.seed.
run
run(program: QuantumProgram) → AerRuntimeJob
Esegue un programma quantistico e restituisce un lavoro completato.
Ogni chiamata estrae un seme nuovo dal seme radice dell’esecutore, quindi le esecuzioni successive sono casuali in modo indipendente anche quando l’esecutore è inizializzato con un seme.
Parametri
programma – Il programma quantistico da eseguire.
Risultati
Un lavoro il cui risultato è immediatamente disponibile.