Support per OpenQASM su diversi dispositivi Braket - Amazon Braket

Impara le basi dell'informatica quantistica con! AWS Iscriviti all'Amazon Braket Digital Learning Plan e ottieni il tuo badge digitale dopo aver completato una serie di corsi di apprendimento e una valutazione digitale.

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 OpenQASM su diversi dispositivi Braket

Per i dispositivi che supportano OpenQASM 3.0, il action campo supporta una nuova azione tramite la GetDevice risposta, come mostrato nell'esempio seguente per i dispositivi and. Rigetti IonQ

//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. Gli esempi seguenti mostrano questo pulse campo per i OQC dispositivi Rigetti e.

// 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 } } } // OQC { "pulse": { "braketSchemaHeader": { "name": "braket.device_schema.pulse.pulse_device_action_properties", "version": "1" }, "supportedQhpTemplateWaveforms": { "gaussian": { "functionName": "gaussian", "arguments": [ { "name": "length", "type": "float", "optional": false }, { "name": "sigma", "type": "float", "optional": false }, { "name": "amplitude", "type": "float", "optional": true }, { "name": "zero_at_edges", "type": "bool", "optional": true } ] }, ... }, "ports": { "channel_1": { "portId": "channel_1", "direction": "tx", "portType": "port_type_1", "dt": 5e-10, "qubitMappings": [ 0 ] }, ... }, "supportedFunctions": { "new_frame": { "functionName": "new_frame", "arguments": [ { "name": "port", "type": "port", "optional": false }, { "name": "frequency", "type": "float", "optional": false }, { "name": "phase", "type": "float", "optional": true } ] }, ... }, "frames": { "q0_drive": { "frameId": "q0_drive", "portId": "channel_1", "frequency": 5500000000, "centerFrequency": 5500000000, "phase": 0, "qubitMappings": [ 0 ] }, ... }, "supportsLocalPulseElements": false, "supportsDynamicFrames": true, "supportsNonNativeGatesWithPulses": true, "validationParameters": { "MAX_SCALE": 1, "MAX_AMPLITUDE": 1, "PERMITTED_FREQUENCY_DIFFERENCE": 1, "MIN_PULSE_LENGTH": 8e-9, "MAX_PULSE_LENGTH": 0.00012 } } }

I campi precedenti descrivono in dettaglio quanto segue:

Porte:

Descrive le porte predefinite dei dispositivi esterni (extern) dichiarate sulla QPU in aggiunta alle proprietà associate della porta specificata. 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 OpenQASM 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.

  • Proprietà specifiche QHP () qhpSpecificProperties

    • Una mappa opzionale che descrive in dettaglio le proprietà esistenti sulla porta specifica del QHP.

Cornici:

Descrive i frame esterni predefiniti dichiarati sulla QPU 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 OpenQASM 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 del 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.

  • Proprietà specifiche QHP () qhpSpecificProperties

    • Una mappa opzionale che descrive in dettaglio le proprietà esistenti relative al frame specifico del QHP.

SupportsDynamicFrames:

Descrive se un frame può essere dichiarato o meno in uno cal o defcal blocchi tramite la OpenPulse newframe funzione. Se questo è falso, all'interno del programma possono essere utilizzati solo i frame elencati nella struttura dei frame.

SupportedFunctions:

Descrive le OpenPulse funzioni supportate dal dispositivo oltre agli argomenti, ai tipi di argomento e ai tipi restituiti associati per le funzioni specificate. Per vedere esempi di utilizzo delle OpenPulse funzioni, consultate le OpenPulsespecifiche. Al momento, Braket supporta:

  • shift_phase

    • Sposta la fase di un frame in base a un valore specificato

  • set_phase

    • Imposta la fase del frame sul valore specificato

  • 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


               ConstantFunction

τè la lunghezza della forma d'onda ed iq è un numero complesso.

def constant(length, iq)

gaussiana


               GaussianFunction

τè 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)

TRASCINA Gaussian


               TRASCINA GaussianFunction

τè la lunghezza della forma d'onda, σ è la larghezza della gaussiana, β è un parametro libero ed A è l'ampiezza. 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 forma d'onda DRAG, vedere il paper Simple Pulses for Elimination of Leakage in Weakly Nonlinear Qubits.

def drag_gaussian(length, sigma, beta, 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 blocchi. defcal 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 OpenQASM

Per scoprire quali funzionalità di OpenQASM 3.0 sono supportate da ciascun dispositivo, puoi fare riferimento alla braket.ir.openqasm.program chiave 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 } ] } }, ...