Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Support per Open QASM su diversi dispositivi Braket
Per i dispositivi che supportano Open QASM 3.0, il action
campo supporta una nuova azione tramite la GetDevice
risposta, come illustrato nell'esempio seguente per Rigetti e IonQ dispositivi.
//OpenQASM as available with the Rigetti device capabilities { "braketSchemaHeader": { "name": "braket.device_schema.rigetti.rigetti_device_capabilities", "version": "1" }, "service": {...}, "action": { "braket.ir.jaqcd.program": {...}, "braket.ir.openqasm.program": { "actionType": "braket.ir.openqasm.program", "version": [ "1" ], …. } } } //OpenQASM as available with the IonQ device capabilities { "braketSchemaHeader": { "name": "braket.device_schema.ionq.ionq_device_capabilities", "version": "1" }, "service": {...}, "action": { "braket.ir.jaqcd.program": {...}, "braket.ir.openqasm.program": { "actionType": "braket.ir.openqasm.program", "version": [ "1" ], …. } } }
Per i dispositivi che supportano il controllo a impulsi, il pulse
campo viene visualizzato nella GetDevice
risposta. L'esempio seguente mostra questo pulse
campo per Rigetti dispositivo.
// Rigetti { "pulse": { "braketSchemaHeader": { "name": "braket.device_schema.pulse.pulse_device_action_properties", "version": "1" }, "supportedQhpTemplateWaveforms": { "constant": { "functionName": "constant", "arguments": [ { "name": "length", "type": "float", "optional": false }, { "name": "iq", "type": "complex", "optional": false } ] }, ... }, "ports": { "q0_ff": { "portId": "q0_ff", "direction": "tx", "portType": "ff", "dt": 1e-9, "centerFrequencies": [ 375000000 ] }, ... }, "supportedFunctions": { "shift_phase": { "functionName": "shift_phase", "arguments": [ { "name": "frame", "type": "frame", "optional": false }, { "name": "phase", "type": "float", "optional": false } ] }, ... }, "frames": { "q0_q1_cphase_frame": { "frameId": "q0_q1_cphase_frame", "portId": "q0_ff", "frequency": 462475694.24460185, "centerFrequency": 375000000, "phase": 0, "associatedGate": "cphase", "qubitMappings": [ 0, 1 ] }, ... }, "supportsLocalPulseElements": false, "supportsDynamicFrames": false, "supportsNonNativeGatesWithPulses": false, "validationParameters": { "MAX_SCALE": 4, "MAX_AMPLITUDE": 1, "PERMITTED_FREQUENCY_DIFFERENCE": 400000000 } } }
I campi precedenti descrivono in dettaglio quanto segue:
Porte:
Descrive le porte predefinite del dispositivo external (extern
) dichiarate su oltre alle proprietà associate della porta specificata. QPU Tutte le porte elencate in questa struttura sono pre-dichiarate come identificatori validi all'interno del OpenQASM 3.0
programma inviato dall'utente. Le proprietà aggiuntive di una porta includono:
-
ID porta (portId)
-
Il nome della porta dichiarato come identificatore in Open QASM 3.0.
-
-
Direzione (direzione)
-
La direzione del porto. Le porte di azionamento trasmettono gli impulsi (direzione «tx»), mentre le porte di misurazione ricevono gli impulsi (direzione «rx»).
-
-
Tipo di porta () portType
-
Il tipo di azione di cui è responsabile questa porta (ad esempio, drive, capture o ff - fast-flux).
-
-
Dt (dt)
-
Il tempo in secondi che rappresenta una singola fase temporale di campionamento sulla porta specificata.
-
-
Mappature Qubit () qubitMappings
-
I qubit associati alla porta specificata.
-
-
Frequenze centrali () centerFrequencies
-
Un elenco delle frequenze centrali associate per tutti i frame predichiarati o definiti dall'utente sulla porta. Per ulteriori informazioni, fate riferimento a Frames.
-
-
QHPProprietà specifiche (qhpSpecificProperties)
-
Una mappa opzionale che descrive in dettaglio le proprietà esistenti sulla porta specifica diQHP.
-
Cornici:
Descrive i frame esterni predefiniti dichiarati sui QPU frame e le proprietà associate relative ai frame. Tutti i frame elencati in questa struttura sono pre-dichiarati come identificatori validi all'interno del OpenQASM 3.0
programma inviato dall'utente. Le proprietà aggiuntive di un frame includono:
-
ID del frame (frameId)
-
Il nome del frame dichiarato come identificatore in Open QASM 3.0.
-
-
ID porta () portId
-
La porta hardware associata per il frame.
-
-
Frequenza (frequenza)
-
La frequenza iniziale predefinita del frame.
-
-
Frequenza centrale (centerFrequency)
-
Il centro della larghezza di banda della frequenza per il frame. In genere, i frame possono essere regolati solo su una determinata larghezza di banda attorno alla frequenza centrale. Di conseguenza, le regolazioni della frequenza devono rimanere entro un determinato delta della frequenza centrale. Puoi trovare il valore della larghezza di banda nei parametri di convalida.
-
-
Fase (fase)
-
La fase iniziale predefinita del frame.
-
-
Porta associata (associatedGate)
-
Le porte associate al frame specificato.
-
-
Mappature Qubit () qubitMappings
-
I qubit associati al frame specificato.
-
-
QHPProprietà specifiche () qhpSpecificProperties
-
Una mappa opzionale che descrive in dettaglio le proprietà esistenti relative al frame specifico diQHP.
-
SupportsDynamicFrames:
Descrive se un frame può essere dichiarato o meno in uno cal
o più defcal
blocchi tramite OpenPulse newframe
funzione. Se questo è falso, all'interno del programma possono essere utilizzati solo i frame elencati nella struttura dei frame.
SupportedFunctions:
Descrive il OpenPulse funzioni supportate per il dispositivo oltre agli argomenti, ai tipi di argomento e ai tipi restituiti associati per le funzioni specificate. Per vedere esempi di utilizzo di OpenPulse funzioni, vedere le OpenPulsespecifiche
-
shift_phase
-
Sposta la fase di un frame in base a un valore specificato
-
-
set_phase
-
Imposta la fase del frame sul valore specificato
-
-
swap_phases
-
Scambia le fasi tra due frame.
-
-
shift_frequency
-
Sposta la frequenza di un fotogramma in base a un valore specificato
-
-
set_frequency
-
Imposta la frequenza del frame sul valore specificato
-
-
giocare
-
Pianifica una forma d'onda
-
-
capture_v0
-
Restituisce il valore di un frame di acquisizione in un registro di bit
-
SupportedQhpTemplateWaveforms:
Descrive le funzioni di forma d'onda predefinite disponibili sul dispositivo e gli argomenti e i tipi associati. Per impostazione predefinita, Braket Pulse offre routine di forme d'onda predefinite su tutti i dispositivi, che sono:
Costante
τ
è la lunghezza della forma d'onda ed è un numero complesso. iq
def constant(length, iq)
gaussiana
τ
è la lunghezza della forma d'onda, è la larghezza della gaussiana e l'ampiezza. σ
A
Se è impostata ZaE
suTrue
, la gaussiana viene sfalsata e ridimensionata in modo che sia uguale a zero all'inizio e alla fine della forma d'onda e raggiunga il massimo. A
def gaussian(length, sigma, amplitude=1, zero_at_edges=False)
DRAGgaussiana
τ
è la lunghezza della forma d'onda, è la larghezza della gaussiana, σ
è un parametro libero ed è l'ampiezza. β
A
Se è impostata ZaE
suTrue
, la Derivative Removal by Adiabatic Gate (DRAG) gaussian viene sfalsata e ridimensionata in modo da essere uguale a zero all'inizio e alla fine della forma d'onda e la parte reale raggiunge il massimo. A
Per ulteriori informazioni sulla DRAG forma d'onda, vedere il paper Simple Pulses for Elimination of Leakage in Weakly
def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)
Piazza Erf
Dov'è la lunghezza, L
W
è la larghezza della forma d'onda, σ
definisce la velocità con cui gli spigoli si alzano e si abbassano e, è l'ampiezza. t1=(L−W)/2
t22=(L+W)/2
A
Se è impostata ZaE
suTrue
, la gaussiana viene sfalsata e ridimensionata in modo che sia uguale a zero all'inizio e alla fine della forma d'onda e raggiunga il massimo. A
L'equazione seguente è la versione ridimensionata della forma d'onda.
b=erf(−t1/σ)/2+erf(t2/σ)/2
Dove e. a=erf(W/2σ)
def erf_square(length, width, sigma, amplitude=1, zero_at_edges=False)
SupportsLocalPulseElements:
Descrive se gli elementi a impulsi, come porte, frame e forme d'onda, possono essere definiti localmente in defcal
blocchi. Se il valore èfalse
, gli elementi devono essere definiti in cal
blocchi.
SupportsNonNativeGatesWithPulses:
Descrive se è possibile o meno utilizzare porte non native in combinazione con programmi a impulsi. Ad esempio, non possiamo usare un gate non nativo come un H
gate in un programma senza prima definire il gate through defcal
per il qubit usato. Puoi trovare l'elenco delle nativeGateSet
chiavi dei gate nativi sotto le funzionalità del dispositivo.
ValidationParameters:
Descrive i limiti di convalida degli elementi Pulse, tra cui:
-
Valori di scala massima/ampiezza massima per le forme d'onda (arbitrari e predefiniti)
-
Larghezza di banda di frequenza massima rispetto alla frequenza centrale fornita in Hz
-
Lunghezza/durata minima dell'impulso in secondi
-
Lunghezza/durata massima dell'impulso in secondi
Operazioni, risultati e tipi di risultati supportati con Open QASM
Per scoprire quali funzionalità Open QASM 3.0 sono supportate da ciascun dispositivo, potete fare riferimento alla braket.ir.openqasm.program
chiave presente nel action
campo sull'output delle funzionalità del dispositivo. Ad esempio, le seguenti sono le operazioni supportate e i tipi di risultati disponibili per il simulatore Braket State Vector SV1.
... "action": { "braket.ir.jaqcd.program": { ... }, "braket.ir.openqasm.program": { "version": [ "1.0" ], "actionType": "braket.ir.openqasm.program", "supportedOperations": [ "ccnot", "cnot", "cphaseshift", "cphaseshift00", "cphaseshift01", "cphaseshift10", "cswap", "cy", "cz", "h", "i", "iswap", "pswap", "phaseshift", "rx", "ry", "rz", "s", "si", "swap", "t", "ti", "v", "vi", "x", "xx", "xy", "y", "yy", "z", "zz" ], "supportedPragmas": [ "braket_unitary_matrix" ], "forbiddenPragmas": [], "maximumQubitArrays": 1, "maximumClassicalArrays": 1, "forbiddenArrayOperations": [ "concatenation", "negativeIndex", "range", "rangeWithStep", "slicing", "selection" ], "requiresAllQubitsMeasurement": true, "supportsPhysicalQubits": false, "requiresContiguousQubitIndices": true, "disabledQubitRewiringSupported": false, "supportedResultTypes": [ { "name": "Sample", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 1, "maxShots": 100000 }, { "name": "Expectation", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 0, "maxShots": 100000 }, { "name": "Variance", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 0, "maxShots": 100000 }, { "name": "Probability", "minShots": 1, "maxShots": 100000 }, { "name": "Amplitude", "minShots": 0, "maxShots": 0 } { "name": "AdjointGradient", "minShots": 0, "maxShots": 0 } ] } }, ...