Skip to main content
IBM Quantum Platform

BackendV2

class qiskit.providers.BackendV2(provider=None, name=None, description=None, online_date=None, backend_version=None, **fields)

GitHub

Basi: Backend, ABC

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()

GitHub

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

qiskit.providers.Options

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 version dall'attributo, poiché version si riferisce alla versione astratta Backend dell'interfaccia dell'oggetto, mentre backend_version serve 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

provider

target

A qiskit.transpiler.Target per il backend.

Tipo di restituzione

Destinazione

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)

GitHub

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

QubitProperties | elenco [ QubitProperties ]

run

abstractmethod run(run_input, **options)

GitHub

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 QuantumCircuit oggetti 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

Lavoro

set_options

set_options(**fields)

GitHub

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

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