Skip to main content
IBM Quantum Platform

Destinazione

class qiskit.transpiler.Target(description=None, num_qubits=0, dt=None, granularity=1, min_length=1, pulse_alignment=1, acquire_alignment=1, qubit_properties=None, concurrent_measurements=None, **_subclass_kwargs)

GitHub

Basi: BaseTarget

Lo scopo dell'oggetto Target è quello di informare il compilatore di Qiskit sui vincoli di un particolare backend, in modo che il compilatore possa compilare un circuito di input in qualcosa che funzioni e sia ottimizzato per un dispositivo. Attualmente contiene una descrizione delle istruzioni su un backend e delle loro proprietà, nonché alcune informazioni sulla tempistica. Tuttavia, questa interfaccia esatta può evolvere nel tempo, in base alle esigenze del compilatore. Queste modifiche saranno effettuate in modo controllato e retrocompatibile quando vengono apportate (tramite versioning, sottoclassi o mixin) per aggiungere informazioni all'insieme di quelle esposte da un target.

Per fare un esempio semplice, supponiamo che un backend abbia due qubit, supporti UGate su entrambi i qubit e CXGate in entrambe le direzioni. Per modellare questo scenario, dovresti creare il target nel modo seguente:

from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import UGate, CXGate
from qiskit.circuit import Parameter

gmap = Target()
theta = Parameter('theta')
phi = Parameter('phi')
lam = Parameter('lambda')
u_props = {
    (0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
    (1,): InstructionProperties(duration=4.52e-8, error=0.00032115),
}
gmap.add_instruction(UGate(theta, phi, lam), u_props)
cx_props = {
    (0,1): InstructionProperties(duration=5.23e-7, error=0.00098115),
    (1,0): InstructionProperties(duration=4.52e-7, error=0.00132115),
}
gmap.add_instruction(CXGate(), cx_props)

Ogni istruzione in Target è indicizzata da un nome di stringa univoco che identifica in modo univoco l'istanza di un oggetto in Target Instruction oggetto nel target. Esiste una mappatura 1:1 tra un nome e un'istanza di Instruction nella destinazione e ogni nome deve essere unico. Per impostazione predefinita, il nome è l'attributo name dell'istruzione, ma può essere impostato su qualsiasi cosa. Ciò consente a un singolo target di avere più istanze della stessa classe di istruzioni con parametri diversi. Per esempio, se un target di backend ha due istanze di un oggetto RXGate una è parametrizzata su qualsiasi theta, mentre l'altra è sintonizzata su un theta di pi/6, è possibile aggiungerle facendo qualcosa di simile:

import math

from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import RXGate
from qiskit.circuit import Parameter

target = Target()
theta = Parameter('theta')
rx_props = {
    (0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
}
target.add_instruction(RXGate(theta), rx_props)
rx_30_props = {
    (0,): InstructionProperties(duration=1.74e-6, error=.00012)
}
target.add_instruction(RXGate(math.pi / 6), rx_30_props, name='rx_30')

Quindi nell'oggetto target , accedendo a rx_30 si otterrà l'angolo fisso RXGate mentre rx otterrà l'angolo parametrizzato RXGate.

È possibile specificare facoltativamente un limite ai valori validi su un gate nel target utilizzando l'argomento angle_bounds chiave quando si chiama il add_instruction() metodo. I limiti sono impostati sulle operazioni e non sulle singole istruzioni, quindi quando si chiama add_instruction() i limiti vengono applicati a tutti i qargs su cui è definito. I limiti sono specificati in un elenco di coppie di valori float, dove il primo valore float è il limite inferiore e il secondo valore float è il limite superiore. Ad esempio, se hai specificato un limite angolare:

[(0.0, 3.14), (-3.14, 3.14), (0.0, 1.0)]

indica i limiti degli angoli per un gate a 3 parametri, in cui il primo parametro accetta angoli compresi tra 0 e 3.14, il secondo tra -3.14 e 3.14, e il terzo parametro tra 0 e 1. Anche tutti i limiti sono impostati in modo inclusivo. Un vincolo può anche essere specificato con None invece di una 2-tupla, il che indica che il parametro non ha vincoli. Ad esempio:

[(0.0, 3.14), None, None]

indica un angolo vincolato per un gate a 3 parametri, in cui solo il primo parametro è limitato ad angoli compresi tra 0.0 e 3.14 e gli altri parametri accettano qualsiasi valore.

gate_has_angle_bounds()È possibile verificare se alcune operazioni nel target hanno dei limiti angolari impostati con, has_angle_bounds() e anche se un nome specifico nel target ha dei limiti angolari impostati con. È possibile verificare se un determinato insieme di valori dei parametri rientra nei limiti angolari utilizzando supported_angle_bound(). Nei gestori di pass predefiniti, il WrapAngles pass viene utilizzato per imporre i limiti angolari; affinché ciò funzioni, è necessario fornire una funzione al pass WrapAngleRegistry utilizzato. Per ulteriori dettagli su questo argomento, si veda: “Limiti angolari sui Gates ”.

Questa classe può essere interrogata tramite il protocollo di mappatura, utilizzando il nome dell'istruzione come chiave. È possibile modificare qualsiasi proprietà di un'istruzione tramite il metodo update_instruction_properties() metodo. La modifica tramite il protocollo di mappatura o la mutazione degli attributi di un oggetto non è supportata InstructionProperties di un oggetto non è supportata e ciò invalida lo stato interno dell'oggetto.

Nota

Questa classe presuppone che gli indici dei qubit inizino da 0 e siano un insieme contiguo, se si desidera una sottomappatura, i bit dovranno essere reindicizzati in un nuovo oggetto Target oggetto.

Nota

Questa classe supporta solo l'aggiunta di porte, qarg e proprietà. Se è necessario rimuovere uno di questi, la soluzione migliore è iterare su un oggetto esistente e creare un nuovo sottoinsieme (o usare uno dei metodi per farlo). L'oggetto memorizza internamente nella cache le diverse visualizzazioni, che potrebbero essere invalidate dalle rimozioni.


Sottoclassi

Sebbene sia tecnicamente possibile sottoclassezzare Targetma si tenga presente che la maggior parte delle informazioni incorporate è in Rust e viene interrogata da Rust nei passaggi del transpiler incorporato. Python -le sovrascritture dello spazio non sono visibili a Rust e non si dovrebbe fare affidamento su di esse per modificare il comportamento dei passaggi di transpiler integrati in Qiskit. Target dovrebbe essere una rappresentazione di una QPU che ha costruttori specializzati, non sottoclassi specializzate; l'API usuale per la costruzione di una QPU dovrebbe essere una funzione che restituisce una classe base Target dovrebbe essere una funzione che restituisce un costruttore di base Targetnon una sottoclasse con un inizializzatore personalizzato.

È possibile utilizzare la sottoclassificazione per aggiungere ulteriori proprietà dello spazio Python al proprio Target, ad esempio per interpretarle successivamente in fasi di transpilazione personalizzate specifiche del backend; il Target viene passato ai costruttori dei plugin di fase.

Non si dovrebbe sottoclasse Target per cercare di modificare il comportamento dei passaggi incorporati di Qiskit; il sottoclasse Python -space non sarà visto dai passaggi scritti in Rust.

Inoltre, poiché il nucleo di Target è scritto in Rust e utilizza __new__() come inizializzatore e bisogna assicurarsi che gli argomenti corretti siano passati all'implementazione sottostante. Se si sovrascrive la firma del metodo __init__() è necessario includere anche una sovrascrittura di __new__() con la stessa firma, che richiama super().__new__() in modo corretto.

Creare un nuovo Target oggetto.

descrizione param

Una stringa opzionale per descrivere il target.

descrizione del tipo

STR

parametri num_qubit

Un int opzionale per specificare il numero di qubit del target backend. Questo non è un limite rigido alla costruzione; qualsiasi chiamata a add_instruction() causerà l'aggiornamento dell'insieme num\code_qubit per accogliere qualsiasi qargs concreto nelle proprietà date.

Questo valore può essere impostato esplicitamente a None per indicare una macchina Target che rappresenta un simulatore o un'altra macchina astratta che non impone limiti al numero di qubit. In questo caso, tutte le istruzioni aggiunte alla destinazione devono essere globali (con properties=None o properties={None: None}).

tipo num_qubit

int

param dt

Risoluzione temporale del sistema dei segnali di ingresso in secondi

tipo dt

mobile

parametri granularità

Un valore intero che rappresenta la risoluzione minima del gate di impulsi in unità di dt. Un gate a impulsi definito dall'utente deve avere una durata pari a un multiplo di questo valore di granularità.

granularità del tipo

int

param Lunghezza minima

Un valore intero che rappresenta la lunghezza minima del gate dell'impulso in unità di dt. Un gate di impulsi definito dall'utente dovrebbe essere più lungo di questa lunghezza.

tipo lunghezza min

int

parametro allineamento_impulsi

Un valore intero che rappresenta la risoluzione temporale dell'ora di inizio dell'istruzione gate. L'istruzione Gate deve iniziare a un tempo che è un multiplo del valore di allineamento.

tipo pulse_alignment

int

parametri allineamento_di_acquisizione

Un valore intero che rappresenta la risoluzione temporale dell'ora di inizio dell'istruzione di misura. L'istruzione di misura deve iniziare a un tempo che è un multiplo del valore di allineamento.

tipo acquisire_allineamento

int

parametri qubit_properties

Un elenco di QubitProperties che definisce le caratteristiche di ciascun qubit del dispositivo di destinazione. Se specificato, la lunghezza di questo elenco deve corrispondere al numero di qubit del target, dove l'indice dell'elenco corrisponde al numero di qubit per cui sono definite le proprietà. Se alcuni qubit non hanno proprietà disponibili, si può impostare la voce su None

tipo qubit_properties

elenco

parametri Misure_concorrenti

Un elenco di insiemi di qubit che devono essere misurati insieme. Questo deve essere fornito come un elenco annidato, come [[0, 1], [2, 3, 4]].

tipo misure_concorrenti

elenco

aumenti ValueError

Se num_qubits e qubit_properties sono entrambi definiti e il valore di num_qubits differisce dalla lunghezza di qubit_properties.


Attributi

acquire_alignment

concurrent_measurements

description

dt

Ritorno dt.

granularity

instructions

Ottiene l'elenco di tuple (Instruction, (qargs)) per il target

Per le operazioni a larghezza variabile definite a livello globale, la tupla avrà la forma (class, None) , dove classe è la classe dell'operazione definita a livello globale.

min_length

num_qubits

operation_names

Ottiene i nomi delle operazioni nella destinazione.

operations

Ottenere gli oggetti dell'operazione nella destinazione.

physical_qubits

Restituisce un elenco ordinato di qubit fisici.

pulse_alignment

qargs

L'insieme di qarg nella destinazione.

qubit_properties


Metodi

add_instruction

add_instruction(instruction, properties=None, name=None, *, angle_bounds=None)

GitHub

Aggiungete una nuova istruzione al file Target

Poiché gli oggetti di Target sono strettamente additivi, questo è il metodo principale per modificare un Target. In genere, si usa per popolare completamente un Target prima di usarlo in BackendV2. Ad esempio:

from qiskit.circuit.library import CXGate
from qiskit.transpiler import Target, InstructionProperties

target = Target()
cx_properties = {
    (0, 1): None,
    (1, 0): None,
    (0, 2): None,
    (2, 0): None,
    (0, 3): None,
    (2, 3): None,
    (3, 0): None,
    (3, 2): None
}
target.add_instruction(CXGate(), cx_properties)

Aggiungerà un elemento CXGate al target senza proprietà (durata, errore, ecc.) con l'elenco dei bordi di accoppiamento: (0, 1), (1, 0), (0, 2), (2, 0), (0, 3), (2, 3), (3, 0), (3, 2). Se ci sono proprietà disponibili per l'istruzione, è possibile sostituire il valore None nel dizionario delle proprietà con un oggetto InstructionProperties oggetto. Questo schema si ripete per ogni Instruction supporto del target.

Parametri

  • instruction (Union[qiskit.circuit.Instruction, Type[qiskit.circuit.Instruction]]) – L'oggetto operazione da aggiungere alla mappa. Se è parametrizzato, è possibile impostare qualsiasi valore del parametro. Facoltativamente, per le istruzioni a larghezza variabile (come le operazioni di flusso di controllo quali ForLoop o MCXGate), è possibile specificare la classe. Se viene specificata la classe, è necessario specificare l'argomento name . Quando si utilizza una classe, il gate viene considerato come globale e privo di proprietà definite.
  • properties (dict) – Un dizionario di voci qarg per un InstructionProperties per l'implementazione di quell'istruzione nel backend. Le proprietà sono opzionali per qualsiasi implementazione di istruzioni, se non ci sono InstructionProperties disponibili per il backend il valore può essere None. Se non ci sono vincoli sull'istruzione (come in una simulazione ideale o priva di rumore), questo valore può essere impostato su {None, None} , che indica che l'istruzione funziona su tutti i qubit (o su tutte le permutazioni di qubit disponibili per le porte multi-qubit). Il primo None indica che si applica a tutti i qubit, mentre il secondo None indica che non ci sono InstructionProperties per l'istruzione. Per impostazione predefinita, se properties non è impostato, equivale a passare {None: None}.
  • name (str) – Un nome opzionale da utilizzare per identificare l'istruzione. Se non viene specificato, verrà utilizzato l'attributo name di gate . Tutti i cancelli del sito Target devono avere nomi unici. I backend possono distinguere tra diverse parametrizzazioni di un singolo gate fornendo un nome univoco per ciascuno di essi (ad esempio “rx30”, “rx60”, `”rx90”`` come nell'esempio della documentazione della classe Target ).
  • angle_bounds (list) – I limiti dei parametri per un determinato gate. Questo è specificato da un elenco di tuple (low, high) che rappresentano il limite basso e alto (incluso) dei valori float consentiti per il parametro in quella posizione. Se un parametro non ha un angolo vincolato, si può usare None per rappresentarlo. Ad esempio, se un gate a 3 parametri avesse un vincolo solo sul secondo parametro, lo si rappresenterebbe con: [None, [0, 3.14], None] , che significa che il primo e il terzo parametro possono assumere qualsiasi valore, ma il secondo parametro accetta solo valori compresi tra 0 e 3.14.

Aumenti

  • AttributeError - Se il cancello è già presente nella mappa
  • TranspilerError – Se viene passata una classe di operazione per instruction e non viene specificato alcun nome oppure properties è impostato.

build_coupling_map

build_coupling_map(two_q_gate=None, filter_idle_qubits=False)

GitHub

Ottenere un CouplingMap da questo obiettivo.

Se vi è una combinazione di operazioni su due qubit soggette a un vincolo di connettività e operazioni definite a livello globale, il risultato sarà lo None stesso, poiché la connettività globale implica che non vi siano vincoli sul target. Se desideri visualizzare i vincoli delle operazioni a due qubit che presentano vincoli, dovresti utilizzare two_q_gate l'argomento per limitare l'output ai gate che presentano un vincolo.

Parametri

  • two_q_gate (str) – Nome opzionale di un gate a due qubit nel sito Target per il quale generare la mappa di accoppiamento. Se specificato, la mappa di accoppiamento in uscita avrà solo bordi tra i qubit in cui è presente questo gate.
  • filter_idle_qubits (bool) – Se impostato su True , l'uscita CouplingMap rimuoverà tutti i qubit che non hanno operazioni definite nella destinazione. Si noti che l'uso di questo argomento darà come risultato un oggetto di output CouplingMap che ha dei buchi nei suoi indici che potrebbero differire dalle ipotesi della classe. Il caso d'uso tipico di questo argomento è quello di essere abbinato a CouplingMap.connected_components() che gestirà i buchi come previsto.

Risultati

**L'oggetto CouplingMap **

per questo obiettivo. Se non ci sono vincoli di connettività nella destinazione, verrà restituito None.

Tipo di restituzione

CouplingMap

Aumenti

  • ValueError - Se un gate non a due qubit viene passato per two_q_gate.
  • IndexError - Se viene passata un'istruzione non presente in Target per two_q_gate.

durations

durations()

GitHub

Ottenere un oggetto InstructionDurations dalla destinazione

Risultati

La durata dell'istruzione rappresentata nel campo

Destinazione

Tipo di restituzione

InstructionDurations

from_configuration

classmethod from_configuration(basis_gates, num_qubits=None, coupling_map=None, instruction_durations=None, concurrent_measurements=None, dt=None, timing_constraints=None, custom_name_mapping=None)

GitHub

Creare un oggetto target dalla configurazione globale individuale

Prima della creazione della classe Target i vincoli di un backend erano rappresentati da una collezione di oggetti diversi, che insieme rappresentavano un sottoinsieme delle informazioni contenute nel file Target. Questa funzione fornisce una semplice interfaccia per convertire questi oggetti separati in un oggetto Target.

Questo costruttore utilizzerà gli input di basis_gates, num_qubits e coupling_map per costruire un modello di base del backend e gli input di instruction_durations, backend_properties e inst_map verranno poi interrogati (nell'ordine) sulla base di tale modello per cercare le proprietà di ogni istruzione e qubit. Se c'è un'incongruenza tra gli ingressi, qualsiasi informazione aggiuntiva o contrastante presente in instruction_durations, backend_properties, o inst_map verrà ignorata.

Parametri

  • basis_gates (list[str]) – L'elenco dei nomi dei gate di base per il backend. Affinché il target venga creato, questi nomi devono essere presenti nell'output di get_standard_gate_name_mapping() oppure nell'argomento specificato custom_name_mapping .
  • num_qubits (int | None) – Il numero di qubit supportati dal backend.
  • coupling_map (CouplingMap | None) – La mappa di accoppiamento che rappresenta i vincoli di connettività sul backend. Se specificato, tutti i gate di basis_gates saranno supportati su tutti i qubit (o coppie di qubit).
  • instruction_durations (InstructionDurations | None) – Durata opzionale per le istruzioni. Se specificato, avrà la priorità per l'impostazione del campo duration negli oggetti InstructionProperties per le istruzioni nella destinazione.
  • concurrent_measurements (list) – Un elenco di insiemi di qubit che devono essere misurati insieme. Questo deve essere fornito come un elenco annidato, come [[0, 1], [2, 3, 4]].
  • dt (float | None) – Risoluzione temporale del sistema dei segnali di ingresso in secondi
  • timing_constraints (TimingConstraints | None) – Vincoli temporali facoltativi da includere nel Target
  • custom_name_mapping (dict[str, Any] | None) – Un dizionario opzionale che associa nomi personalizzati di porte/operazioni a basis_gates un Operation oggetto che rappresenta tale porta/operazione. Per impostazione predefinita, la maggior parte dei nomi dei gate standard è associata all'oggetto gate standard; qiskit.circuit.library ciò deve essere specificato solo se l'input basis_gates definisce gate con nomi che non rientrano in tale insieme.

Risultati

il target costruito dalla configurazione di ingresso

Tipo di restituzione

Destinazione

Aumenti

  • TranspilerError – Se i gate di base in ingresso contengono più di 2 qubit e coupling_map è
  • specificato. -
  • KeyError - Se non è disponibile alcuna mappatura per un sito specificato basis_gate.

gate_has_angle_bounds

gate_has_angle_bounds(name)

Controllare se un cancello specifico ha un angolo vincolato impostato

Parametri

name (str) – Il nome dell'istruzione da controllare se ha un limite angolare impostato

Risultati

Restituisce True se il gate si trova nell'obiettivo e se sono stati definiti i limiti dell'angolo. Restituirà False se il gate non ha limiti angolari definiti o non si trova nell'obiettivo.

Tipo di restituzione

bool

get

get(key, default=None)

GitHub

Ottiene un elemento dalla destinazione. Se non viene trovato, restituisce un valore predefinito o Nessuno.

get_non_global_operation_names

get_non_global_operation_names(strict_direction=False)

GitHub

Restituisce i nomi delle operazioni non globali per la destinazione

Le operazioni non globali sono quelle del target che non si applicano a tutti i qubit (per le operazioni a singolo qubit) o a tutti i qarg multi-qubit (per le operazioni multi-qubit).

Parametri

strict_direction (bool) – Se impostato su True , le operazioni multi-qubit considerate non globali rispettano la direzione rigorosa (o l'ordine dei qubit nei qarg è significativo). Ad esempio, se cx è definito su (0, 1) e ecr è definito su (1, 0) , per impostazione predefinita nessuno dei due sarà considerato non globale, ma se strict_direction è impostato su True saranno restituiti sia cx che ecr .

Risultati

Un elenco di nomi di operazioni per operazioni che non sono globali in questo target

Tipo di restituzione

Elenco [str ]

has_angle_bounds

has_angle_bounds()

Controlla se ci sono limiti angolari impostati nell'obiettivo

Risultati

Questo restituirà True se sono stati impostati dei limiti angolari su qualsiasi istruzione del circuito

Tipo di restituzione

bool

instruction_properties

instruction_properties(index)

GitHub

Ottenere le proprietà dell'istruzione per una specifica tupla di istruzioni

Questo metodo deve essere usato insieme all'attributo instructions di un oggetto Target oggetto. È possibile utilizzare questo metodo per ottenere rapidamente le proprietà delle istruzioni per un elemento di instructions utilizzando l'indice dell'elenco. Tuttavia, se non si lavora direttamente con instructions è probabilmente più efficiente accedere direttamente al target tramite il nome e i qubit per ottenere le proprietà dell'istruzione. Ad esempio, se instructions restituito:

[(XGate(), (0,)), (XGate(), (1,))]

si possono ottenere le proprietà di XGate sul qubit 1 con:

props = target.instruction_properties(1)

ma sarebbe più efficiente accedervi direttamente tramite il nome:

props = target['x'][(1,)]

(assumendo che il nome canonico di XGatenella destinazione sia 'x') Questo è particolarmente vero per le destinazioni più grandi, poiché la scala peggiorerà con il numero di tuple di istruzioni in una destinazione.

Parametri

index (int) – L'indice della tupla di istruzioni dell'attributo instructions dell'attributo. Ad esempio, se si vogliono le proprietà del terzo elemento in instructions si dovrebbe impostare questo elemento come 2.

Risultati

Le proprietà dell'istruzione per la tupla di istruzioni specificata

Tipo di restituzione

InstructionProperties

instruction_supported

instruction_supported(operation_name=None, qargs=Ellipsis, operation_class=None, parameters=None, check_angle_bounds=True)

Restituire se l'istruzione (operazione + qubit) è supportata dal target

Parametri

  • operation_name (str) – Il nome dell'operazione per l'istruzione. Deve essere specificato questo o operation_class ; se entrambi sono specificati, operation_class avrà la priorità e questo argomento sarà ignorato.

  • qargs (tuple) – La tupla di indici di qubit per l'istruzione. Se non viene specificato, il metodo restituisce True se l'operazione specificata è supportata su qualsiasi qubit. L'applicazione tipica avrà sempre questa impostazione (altrimenti è come controllare se la destinazione contiene l'operazione). Normalmente non si imposta questo argomento se si vuole verificare più in generale che il target supporti un'operazione con parameters su qualsiasi qubit.

  • operation_class (Type[qiskit.circuit.Instruction]) – La classe delle operazioni che consente di verificare se il sistema di destinazione supporta una determinata operazione in base alla classe anziché al nome. Questa ricerca è più onerosa in termini di risorse, poiché richiede di scorrere tutte le operazioni presenti nell'oggetto di destinazione, anziché limitarsi a una singola ricerca. Se viene specificato, prevarrà operation_name sull'argomento. Il caso d'uso tipico di questa operazione è verificare se una specifica variante di un'operazione è supportata dal backend. Ad esempio, se si volesse verificare se un RXGate fosse supportato su un qubit specifico con un angolo fisso. Quella variante ad angolo fisso avrà in genere un nome diverso dall'attributo ("rx") dell'oggetto name nel bersaglio. Questo può essere utilizzato per verificare se, in tal caso, siano disponibili istanze della classe.

  • parameters (list) –

    Un elenco di parametri per verificare se il target li supporta sui qubit specificati. Se l'istruzione supporta i valori dei parametri specificati nell'elenco sull'operazione e sui qarg specificati, restituirà True , ma se i parametri non sono supportati dall'istruzione specificata, restituirà False. Se questo argomento non è specificato, il metodo restituisce True se l'istruzione è supportata indipendentemente dai parametri dell'istruzione. Se specificato con qualsiasi oggetto Parameter nell'elenco, quella voce sarà trattata come se supportasse qualsiasi valore, tuttavia i nomi dei parametri non saranno controllati (ad esempio, se un'operazione nell'obiettivo è elencata come parametrizzata con "theta" e "phi" viene passata in questa funzione che restituirà True). Ad esempio, se chiamato con:

    parameters = [Parameter("theta")]
    target.instruction_supported("rx", (0,), parameters=parameters)

    restituirà True se un parametro RXGate è supportato sul qubit 0 e accetta qualsiasi parametro. Se è necessario verificare un parametro di valore numerico fisso, questo argomento è solitamente abbinato all'argomento operation_class . Ad esempio:

    target.instruction_supported("rx", (0,), RXGate, parameters=[pi / 4])

    restituirà True se sul qubit 0 esiste un RXGate( pi/4 ).

  • check_angle_bounds (bool) – Se impostato su True (valore predefinito), il valore di parameters sarà convalidato rispetto a qualsiasi limite angolare impostato nella destinazione. Se uno qualsiasi dei valori in parameters è impostato per essere ParameterExpression questo flag non avrà alcun effetto, poiché i limiti angolari influiscono solo sulle operazioni non parametrizzate del circuito.

Risultati

Restituisce True se l'istruzione è supportata e False in caso contrario.

Tipo di restituzione

bool

items

items()

GitHub

Restituisce coppie di nomi di gate e la relativa mappa di proprietà (str, dicttuple[, InstructionProperties] )

keys

keys()

GitHub

Restituisce le chiavi (nomi_operazione) della destinazione

operation_from_name

operation_from_name(instruction)

Ottenere l'oggetto classe dell'operazione per un determinato nome

Parametri

instruction (str) – Il nome dell'istruzione per ottenere l'istanza Instruction per

Risultati

L'istanza dell'istruzione corrispondente al nome. Questa può anche essere la classe per le variabili definite globalmente con le operazioni.

Tipo di restituzione

qiskit.circuit.Instruction

operation_names_for_qargs

operation_names_for_qargs(qargs, /)

Ottenere i nomi delle operazioni per una tupla qargs specificata

Parametri

qargs (tuple) – Una tupla qargs dei qubit per ottenere i gate che vi si applicano. Per esempio, (0,) restituirà l'insieme di tutte le istruzioni che si applicano al qubit 0. Se impostato su None , restituirà i nomi di tutte le operazioni definite a livello globale nella destinazione.

Risultati

L'insieme dei nomi delle operazioni che si applicano al sito qargs.

Tipo di restituzione

set

Aumenti

KeyError - Se qargs non è in target

operations_for_qargs

operations_for_qargs(qargs, /)

Ottenere l'oggetto classe di operazione per una tupla qargs specificata

Parametri

qargs (tuple) – Una tupla qargs dei qubit per ottenere i gate che vi si applicano. Per esempio, (0,) restituirà l'insieme di tutte le istruzioni che si applicano al qubit 0. Se impostato su None , restituirà qualsiasi operazione definita a livello globale nella destinazione.

Risultati

L'elenco delle Instruction che si applicano al qarg specificato. Questa può anche essere una classe se un'operazione di larghezza variabile è definita a livello globale.

Tipo di restituzione

elenco

Aumenti

KeyError - Se qargs non è nel target

qargs_for_operation_name

qargs_for_operation_name(operation)

GitHub

Ottenere i qarg per un determinato nome di operazione

Parametri

operation (str) – Il nome dell'operazione per cui ottenere i qarg

Risultati

L'insieme di qarg a cui si applica l'istanza del gate.

Tipo di restituzione

set

seconds_to_dt

seconds_to_dt(duration)

GitHub

Converte una data durata in secondi in unità di dt

Parametri

duration (float) – La durata in secondi, ad esempio in un campo InstructionProperties per un'istruzione nel target.

Tipo di restituzione

int

Risultati

durata: La durata in unità di dt

supported_angle_bound

supported_angle_bound(name, angles)

Verificare che i parametri di uno specifico gate siano conformi ai limiti angolari

Parametri

  • name (str) – Il nome dell'istruzione che controlla i limiti angolari di
  • angles (list) – Un elenco di valori dei parametri float per name per verificare se sono conformi ai limiti angolari definiti.

Risultati

Restituisce True se i valori dei parametri specificati sono compatibili con i limiti dell'angolo. False viene restituito se uno qualsiasi dei parametri non rientra nei limiti definiti.

Tipo di restituzione

bool

Aumenti

  • TranspilerError – Se name non è presente nel target o non
  • hanno limiti angolari definiti. -

timing_constraints

timing_constraints()

GitHub

Ottenere un oggetto TimingConstraints dalla destinazione

Risultati

I vincoli temporali rappresentati nella tabella Target

Tipo di restituzione

TimingConstraints

update_instruction_properties

update_instruction_properties(instruction, qargs, properties)

GitHub

Aggiorna l'oggetto proprietà per una coppia di istruzioni qarg già presente nella destinazione.

Per facilitare l'accesso, l'utente può ottenere la mappatura tra i qarg applicabili a un'istruzione e le sue proprietà tramite il protocollo di mappatura (usando __getitem__), con il nome dell'istruzione come chiave. Questo metodo è l'unico modo per modificare/aggiornare le proprietà di un'istruzione in Target. L'uso del protocollo di mappatura per le modifiche non è supportato.

Parametri

  • instruction (str) – Il nome dell'istruzione da aggiornare
  • qargs (tuple) – I qarg per aggiornare le proprietà di
  • properties (InstructionProperties) – Le proprietà da impostare per questa istruzione

Aumenti

KeyError - Se instruction o qarg non sono presenti nel target

values

values()

GitHub

Restituisce la mappa delle proprietà (qargs -> InstructionProperties ) di ogni istruzione nella destinazione

Parametri

  • description (str | None)
  • num_qubits (int | None)
  • dt (float | None)
  • granularity (int)
  • min_length (int)
  • pulse_alignment (int)
  • acquire_alignment (int)
  • qubit_properties (list | None)
  • concurrent_measurements (list | None)
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.