Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Support d'OpenQASM sur différents appareils Braket
Pour les appareils compatibles avec OpenQASM 3.0, le action
champ prend en charge une nouvelle action par le biais de la GetDevice
réponse, comme indiqué dans l'exemple suivant pour les Rigetti périphériques et. 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" ], …. } } }
Pour les appareils qui prennent en charge le contrôle du pouls, pulse
le champ est affiché dans la GetDevice
réponse. L'exemple suivant montre ce pulse
champ pour le Rigetti périphérique.
// 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 } } }
Les champs précédents détaillent les éléments suivants :
Ports :
Décrit les ports de périphériques externes (extern
) prédéfinis déclarés sur le QPU en plus des propriétés associées au port donné. Tous les ports répertoriés dans cette structure sont prédéclarés en tant qu'identifiants valides dans le OpenQASM 3.0
programme soumis par l'utilisateur. Les propriétés supplémentaires d'un port sont les suivantes :
-
Identifiant du port (PortID)
-
Le nom de port déclaré comme identifiant dans OpenQASM 3.0.
-
-
Direction (direction)
-
Direction du port. Les ports d'entraînement transmettent des impulsions (direction « tx »), tandis que les ports de mesure reçoivent des impulsions (direction « rx »).
-
-
Type de port (PortType)
-
Type d'action dont ce port est responsable (par exemple, drive, capture ou ff - fast-flux).
-
-
Dt (dt)
-
Durée en secondes qui représente un seul pas de temps d'échantillonnage sur le port donné.
-
-
Mappages de qubits (QubitMappings)
-
Les qubits associés au port donné.
-
-
Fréquences centrales (CenterFrequencies)
-
Liste des fréquences centrales associées pour toutes les trames prédéclarées ou définies par l'utilisateur sur le port. Pour plus d'informations, reportez-vous à la section Cadres.
-
-
Propriétés spécifiques à QHP () qhpSpecificProperties
-
Une carte facultative détaillant les propriétés existantes concernant le port spécifique au QHP.
-
Cadres :
Décrit les cadres externes préfabriqués déclarés sur le QPU ainsi que les propriétés associées aux cadres. Toutes les trames répertoriées dans cette structure sont prédéclarées comme des identifiants valides dans le OpenQASM 3.0
programme soumis par l'utilisateur. Les propriétés supplémentaires d'un cadre sont les suivantes :
-
ID du cadre (FrameID)
-
Le nom du cadre déclaré comme identifiant dans OpenQASM 3.0.
-
-
Identifiant du port (ID du port)
-
Port matériel associé à la trame.
-
-
Fréquence (fréquence)
-
Fréquence initiale par défaut de la trame.
-
-
Fréquence centrale (fréquence centrale)
-
Le centre de la bande passante de fréquence de la trame. Généralement, les trames ne peuvent être ajustées qu'à une certaine bande passante autour de la fréquence centrale. Par conséquent, les ajustements de fréquence doivent rester dans un delta donné par rapport à la fréquence centrale. Vous pouvez trouver la valeur de bande passante dans les paramètres de validation.
-
-
Phase (phase)
-
Phase initiale par défaut de la trame.
-
-
Porte associée (porte associée)
-
Les portes associées à la trame donnée.
-
-
Mappages de qubits (QubitMappings)
-
Les qubits associés à la trame donnée.
-
-
Propriétés spécifiques à QHP () qhpSpecificProperties
-
Une carte optionnelle détaillant les propriétés existantes concernant le cadre spécifique au QHP.
-
SupportsDynamicFrames:
Décrit si un cadre peut être déclaré cal
ou bloqué par le defcal
biais de la OpenPulse newframe
fonction. Si cette valeur est fausse, seules les images répertoriées dans la structure des cadres peuvent être utilisées dans le programme.
SupportedFunctions:
Décrit les OpenPulse fonctions prises en charge par le périphérique en plus des arguments, des types d'arguments et des types de retour associés aux fonctions données. Pour voir des exemples d'utilisation des OpenPulse fonctions, consultez les OpenPulsespécifications
-
shift_phase
-
Déplace la phase d'une image d'une valeur spécifiée
-
-
set_phase
-
Définit la phase du cadre à la valeur spécifiée
-
-
phases d'échange
-
Échange les phases entre deux images.
-
-
shift_frequency
-
Déplace la fréquence d'une image d'une valeur spécifiée
-
-
set_frequency
-
Définit la fréquence de l'image à la valeur spécifiée
-
-
jouer
-
Planifie une forme d'onde
-
-
capture v0
-
Renvoie la valeur d'une image de capture dans un registre de bits
-
SupportedQhpTemplateWaveforms:
Décrit les fonctions de forme d'onde prédéfinies disponibles sur le périphérique ainsi que les arguments et types associés. Par défaut, Braket Pulse propose des routines de forme d'onde prédéfinies sur tous les appareils, à savoir :
Constante

τ
est la longueur de la forme d'onde et iq
est un nombre complexe.
def constant(length, iq)
Gaussien

τ
est la longueur de la forme d'onde, σ
la largeur de la gaussienne et l'amplitudeA
. Si elle est réglée ZaE
surTrue
, la valeur gaussienne est décalée et redimensionnée de telle sorte qu'elle soit égale à zéro au début et à la fin de la forme d'onde, et qu'elle atteigne son maximum. A
def gaussian(length, sigma, amplitude=1, zero_at_edges=False)
DRAG Gaussien

τ
est la longueur de la forme d'onde, σ
est la largeur de la gaussienne, β
est un paramètre libre et A
est l'amplitude. Si cette valeur est ZaE
définie surTrue
, la valeur gaussienne de suppression des dérivées par porte adiabatique (DRAG) est décalée et redimensionnée de telle sorte qu'elle soit égale à zéro au début et à la fin de la forme d'onde, et que la partie réelle atteigne son maximum. A
Pour plus d'informations sur la forme d'onde DRAG, consultez l'article Simple Pulses for Elimination of Leak in Weakly Nonlinear
def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)
Place Erf
Où L
est la longueur, W
est la largeur de la forme d'onde, σ
définit la vitesse à laquelle les arêtes montent et descendentt22=(L+W)/2
, t1=(L−W)/2
et quelle A
est l'amplitude. Si elle est réglée ZaE
surTrue
, la valeur gaussienne est décalée et redimensionnée de telle sorte qu'elle soit égale à zéro au début et à la fin de la forme d'onde, et qu'elle atteigne son maximum. A
L'équation suivante est la version redimensionnée de la forme d'onde.
Où a=erf(W/2σ)
etb=erf(−t1/σ)/2+erf(t2/σ)/2
.
def erf_square(length, width, sigma, amplitude=1, zero_at_edges=False)
SupportsLocalPulseElements:
Décrit si les éléments d'impulsion, tels que les ports, les trames et les formes d'onde, peuvent être définis localement par defcal
blocs. Si la valeur estfalse
, les éléments doivent être définis par cal
blocs.
SupportsNonNativeGatesWithPulses:
Décrit si nous pouvons ou ne pouvons pas utiliser des portes non natives en combinaison avec des programmes d'impulsions. Par exemple, nous ne pouvons pas utiliser une porte non native comme une H
porte dans un programme sans d'abord définir la porte defcal
pour le qubit utilisé. Vous pouvez trouver la liste des nativeGateSet
clés de porte natives sous les fonctionnalités de l'appareil.
ValidationParameters:
Décrit les limites de validation des éléments d'impulsion, notamment :
-
Échelle maximale/Valeurs d'amplitude maximales pour les formes d'onde (arbitraires et prédéfinies)
-
Largeur de bande de fréquence maximale à partir de la fréquence centrale fournie en Hz
-
Pouls minimal length/duration en secondes
-
Pouls maximal length/duration en secondes
Opérations, résultats et types de résultats pris en charge avec OpenQASM
Pour savoir quelles fonctionnalités d'OpenQASM 3.0 sont prises en charge par chaque appareil, vous pouvez vous référer à la braket.ir.openqasm.program
clé dans le action
champ de sortie des capacités de l'appareil. Par exemple, les opérations prises en charge et les types de résultats disponibles pour le simulateur SV1 Braket State Vector sont les suivants.
... "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 } ] } }, ...