Skip to main content
IBM Quantum Platform

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)

GitHub

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 di ref un’annotazione Tag utilizzata durante la creazione del QuantumProgram. Viene emesso un avviso (se warn_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 PauliLindbladMap che descrivono il canale di rumore di Pauli-Lindblad per quel gate. Il valore della mappa num_qubits deve 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 i all' i-esimo qubit della barriera in ordine crescente dei qubit fisici, quindi una mappa a livello di dispositivo può essere convertita con PauliLindbladMap.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 ( None impostazione 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 in noise_dict. Impostare su False quando 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, un None seme radice viene generato in modo non deterministico; è disponibile in root_seed entrambi 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_seedIl 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.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.