Support d'OpenQASM sur différents appareils Braket - Amazon Braket

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. À l'heure actuelle, Braket soutient :

  • 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

Équation mathématique montrant une fonction constante avec les paramètres t, tau et iq où le résultat est toujours égal à iq.

τest la longueur de la forme d'onde et iq est un nombre complexe.

def constant(length, iq)

Gaussien

Équation mathématique montrant la fonction gaussienne avec les paramètres t, tau, sigma, A=1 et Zae=0.

τ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

Équation mathématique pour la distribution gaussienne DRAG avec les paramètres t, tau, sigma, beta, A=1 et zAE=0.

τ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 Qubits.

def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)

Place Erf

Équation mathématique pour la distribution du carré d'Erf avec les paramètres t, longueur, largeur, sigma, A=1 et zAE=0.

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.

Équation mathématique pour la distribution du carré d'Erf redimensionnée avec les paramètres Zae=1.

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 } ] } }, ...