BackendV2
class qiskit.providers.BackendV2(provider=None, name=None, description=None, online_date=None, backend_version=None, **fields)
Classe astratta per i backend
Questa classe astratta deve essere usata per tutti gli oggetti Backend creati da un provider. Questa versione differisce dalle precedenti classi astratte di Backend per il fatto che l'attributo di configurazione non esiste più. Vengono invece aggiunti gli attributi che espongono le proprietà immutabili richieste equivalenti del dispositivo di backend. Ad esempio, backend.configuration().n_qubits è ora accessibile da backend.num_qubits .
L'attributo options del backend è usato per contenere le opzioni dinamiche configurabili dall'utente del backend. Dovrebbe essere usato più per le opzioni di runtime che configurano l'uso del backend. Ad esempio, qualcosa come un campo shots per un backend che esegue esperimenti, che conterrebbe un int per il numero di scatti da eseguire.
Un oggetto backend può contenere, facoltativamente, metodi denominati get_translation_stage_plugin e get_scheduling_stage_plugin. Se questi metodi sono presenti su un oggetto backend e tale oggetto viene utilizzato per transpile() o, generate_preset_pass_manager() il processo di transpilazione utilizzerà per impostazione predefinita l'output di tali metodi come fase di pianificazione e come fase di compilazione della traduzione. Ciò consente a un backend con requisiti di compilazione personalizzati di specificare un plugin di fase per tali fasi, al fine di consentire una trasformazione personalizzata del circuito e garantire che sia eseguibile sul backend. Questi hook sono abilitati per impostazione predefinita e dovrebbero essere utilizzati solo per attivare fasi di compilazione aggiuntive, qualora fossero necessarie per garantire che un circuito sia eseguibile sul backend o raggiunga il livello di prestazioni previsto. A questi metodi non vengono passati argomenti di input e ci si aspetta che restituiscano un valore str che rappresenti il nome del metodo, il quale dovrebbe essere un plugin di stage (vedi: qiskit.transpiler.preset_passmanagers.plugin per ulteriori dettagli sui plugin). Il caso d'uso tipico previsto è che un fornitore di backend implementi un plugin di fase per translation o scheduling che contenga i passaggi di compilazione personalizzati e che poi i metodi hook sull'oggetto backend restituiscano il nome del plugin, in modo che transpile() lo utilizzi per impostazione predefinita quando si seleziona quel backend come destinazione.
Le sottoclassi di questo metodo devono sovrascrivere il metodo pubblico run() e il metodo interno _default_options():
_default_options
abstractmethod classmethod _default_options()
Restituire le opzioni predefinite
Questo metodo restituisce un oggetto qiskit.providers.Options che verrà utilizzato per le opzioni predefinite. Questi dovrebbero essere i parametri predefiniti da utilizzare per le opzioni del backend.
Risultati
Un oggetto opzioni con
valori predefiniti impostati
Tipo di restituzione
Inizializzare un backend basato su BackendV2
Parametri
- provider - Un riferimento opzionale a ritroso all'oggetto provider da cui proviene il backend
- name (str | None) – Un nome facoltativo per il backend
- description (str | None) – Una descrizione facoltativa del backend
- online_date (datetime | None) – Una data e un'ora (facoltative) in cui il backend è stato messo in linea
- backend_version (str | None) – Una stringa opzionale che indica la versione del backend. Ciò differisce
versiondall'attributo, poichéversionsi riferisce alla versione astrattaBackenddell'interfaccia dell'oggetto, mentrebackend_versionserve a gestire il versioning del backend stesso. - fields - kwarg per i valori da usare per sovrascrivere le opzioni predefinite.
Aumenti
AttributeError - Se viene specificato un campo che non rientra nelle opzioni del backend
Attributi
coupling_map
Restituire l'oggetto CouplingMap oggetto
dt
Restituzione della risoluzione temporale del sistema dei segnali di ingresso
È necessario implementare questa funzione se il backend supporta la programmazione degli impulsi.
Risultati
Il passo temporale del segnale di ingresso in secondi. Se il backend non definisce dt, verrà restituito None .
dtm
Restituzione della risoluzione temporale del sistema dei segnali di uscita
Risultati
Il passo temporale del segnale di uscita in secondi.
Aumenti
NotImplementedError - se il backend non supporta l'interrogazione del timestep del segnale di uscita
instruction_durations
Restituire l'oggetto InstructionDurations oggetto.
instructions
Un elenco di tuple di istruzioni nel backend del modulo (instruction, (qubits))
max_circuits
Il numero massimo di circuiti che possono essere eseguiti in un singolo lavoro.
Se non c'è un limite, verrà restituito Nessuno
meas_map
Restituisce il raggruppamento di misure che sono state multiplexate
È necessario implementare questa funzione se il backend supporta la programmazione degli impulsi.
Risultati
Il raggruppamento delle misure che vengono multiplexate
Aumenti
NotImplementedError - se il backend non supporta l'interrogazione della mappatura delle misure
num_qubits
Restituisce il numero di qubit di cui dispone il backend.
operation_names
Un elenco di nomi di istruzioni supportate dal backend.
operations
Un elenco di Instruction che il backend supporta.
options
Restituisce le opzioni per il backend
Le opzioni di un backend sono i parametri dinamici che definiscono le modalità di utilizzo del backend. Questi vengono utilizzati per controllare il run() metodo.
provider
Restituisce il fornitore di backend.
Risultati
il provider responsabile del backend.
Tipo di restituzione
target
version
Valore predefinito: 2
name
Nome del backend.
description
Descrizione facoltativa leggibile dall'uomo.
online_date
Data in cui il backend è stato messo online.
backend_version
Versione del backend fornito. Non è la stessa cosa di BackendV2.versionche è la versione dell'interfaccia Backend dell'interfaccia astratta.
Metodi
qubit_properties
qubit_properties(qubit)
Restituisce QubitProperties per un dato qubit.
Se non sono stati definiti o se il backend non supporta l'interrogazione di questi dettagli, questo metodo non deve essere implementato.
Parametri
qubit (int |list[int]) – Il qubit a cui QubitProperties destinare l'oggetto. Può trattarsi di un singolo numero intero corrispondente a 1 qubit oppure di un elenco di qubit; verrà restituito un elenco di QubitProperties oggetti nello stesso ordine
Risultati
L'oggetto QubitProperties per il qubit specificato. Se viene fornito un elenco di qubit, verrà restituito un elenco. Se mancano delle proprietà per un qubit, questo può essere None.
Aumenti
NotImplementedError - se il backend non supporta l'interrogazione delle proprietà dei qubit
Tipo di restituzione
run
abstractmethod run(run_input, **options)
Eseguito sul backend.
Questo metodo restituisce un Job che esegue i circuiti. A seconda del backend, questa può essere una chiamata async o sync. È a discrezione del provider decidere se l'esecuzione debba essere bloccata o meno fino al termine dell'esecuzione: la classe Job può gestire entrambe le situazioni.
Parametri
- run_input (QuantumCircuit orlist) – Un singolo oggetto o un elenco di
QuantumCircuitoggetti da eseguire sul backend. - options - Qualsiasi opzione kwarg da passare al backend per l'esecuzione della configurazione. Se una chiave è presente anche nell'attributo/oggetto options, ci si aspetta che il valore specificato venga usato al posto di quello impostato nell'oggetto options.
Risultati
L'oggetto lavoro per la corsa
Tipo di restituzione
set_options
set_options(**fields)
Impostare i campi delle opzioni per il backend
Questo metodo viene utilizzato per aggiornare le opzioni di un backend. Se è necessario modificare una qualsiasi opzione prima dell'esecuzione, è sufficiente passare il kwarg con il nuovo valore delle opzioni.
Parametri
campi - I campi per aggiornare le opzioni
Aumenti
AttributeError - Se il campo passato non fa parte delle opzioni