Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Quelles sont les fonctionnalités d'OpenQASM prises en charge par Braket ?

Mode de mise au point
Quelles sont les fonctionnalités d'OpenQASM prises en charge par 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.

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.

La section suivante répertorie les types de données, les instructions et les instructions pragma d'OpenQASM 3.0 pris en charge par Braket.

Types de données OpenQASM pris en charge

Les types de données OpenQASM suivants sont pris en charge par Amazon Braket.

  • Des entiers non négatifs sont utilisés pour les indices de qubits (virtuels et physiques) :

    • cnot q[0], q[1];

    • h $0;

  • Des nombres à virgule flottante ou des constantes peuvent être utilisés pour les angles de rotation des portes :

    • rx(-0.314) $0;

    • rx(pi/4) $0;

Note

pi est une constante intégrée à OpenQASM et ne peut pas être utilisée comme nom de paramètre.

  • Les tableaux de nombres complexes (avec la im notation OpenQASM pour les parties imaginaires) sont autorisés dans les pragmas de type résultat pour définir les observables hermitiens généraux et dans les pragmas unitaires :

    • #pragma braket unitary [[0, -1im], [1im, 0]] q[0]

    • #pragma braket result expectation hermitian([[0, -1im], [1im, 0]]) q[0]

Déclarations OpenQASM prises en charge

Les instructions OpenQASM suivantes sont prises en charge par Amazon Braket.

  • Header: OPENQASM 3;

  • Déclarations binaires classiques :

    • bit b1;(de manière équivalente,creg b1;)

    • bit[10] b2;(de manière équivalente,creg b2[10];)

  • Déclarations Qubit :

    • qubit b1;(de manière équivalente,qreg b1;)

    • qubit[10] b2;(de manière équivalente,qreg b2[10];)

  • Indexation au sein de tableaux : q[0]

  • Entrée : input float alpha;

  • spécification physique qubits: $0

  • Portails et opérations pris en charge sur un appareil :

    • h $0;

    • iswap q[0], q[1];

Note

Les portes prises en charge par un périphérique se trouvent dans les propriétés de l'appareil pour les actions OpenQASM ; aucune définition de porte n'est nécessaire pour utiliser ces portes.

  • Relevés verbatim box. Actuellement, nous ne prenons pas en charge la notation de la durée des boîtes. Portes natives et physiques qubits sont obligatoires dans les boîtes verbatim.

#pragma braket verbatim box{ rx(0.314) $0; }
  • Mesure et assignation de mesure sur qubits ou un tout qubit s'inscrire.

    • measure $0;

    • measure q;

    • measure q[0];

    • b = measure q;

    • measure q → b;

Note

pi est une constante intégrée à OpenQASM et ne peut pas être utilisée comme nom de paramètre.

Pragmas OpenQASM de Braket

Les instructions pragma OpenQASM suivantes sont prises en charge par Amazon Braket.

  • Pragmas relatifs au bruit

    • #pragma braket noise bit_flip(0.2) q[0]

    • #pragma braket noise phase_flip(0.1) q[0]

    • #pragma braket noise pauli_channel

  • Pragmas textuels

    • #pragma braket verbatim

  • Type de résultat : pragmas

    • Types de résultats invariants de base :

      • Vecteur d'état : #pragma braket result state_vector

      • Matrice de densité : #pragma braket result density_matrix

    • Pragmas de calcul du gradient :

      • Dégradé adjoint : #pragma braket result adjoint_gradient expectation(2.2 * x[0] @ x[1]) all

    • Types de résultats de base Z :

      • Amplitude : #pragma braket result amplitude "01"

      • Probabilité : #pragma braket result probability q[0], q[1]

    • Types de résultats basés sur une rotation

      • Espérance : #pragma braket result expectation x(q[0]) @ y([q1])

      • Écart : #pragma braket result variance hermitian([[0, -1im], [1im, 0]]) $0

      • Échantillon : #pragma braket result sample h($1)

Note

OpenQASM 3.0 est rétrocompatible avec OpenQASM 2.0, de sorte que les programmes écrits à l'aide de la version 2.0 peuvent s'exécuter sur Braket. Cependant, les fonctionnalités d'OpenQASM 3.0 prises en charge par Braket présentent quelques différences syntaxiques mineures, telles que qreg vs et vs. creg qubit bit Il existe également des différences dans la syntaxe des mesures, et celles-ci doivent être prises en charge par leur syntaxe correcte.

Support des fonctionnalités avancées pour OpenQASM sur le simulateur local

Il LocalSimulator prend en charge les fonctionnalités avancées d'OpenQASM qui ne sont pas proposées dans le cadre des QPU de Braket ou des simulateurs à la demande. La liste de fonctionnalités suivante n'est prise en charge que dans LocalSimulator :

  • Modificateurs de portail

  • Portails intégrés OpenQASM

  • Variables classiques

  • Opérations classiques

  • Portails personnalisés

  • Contrôle classique

  • fichiers QASM

  • Sous-programmes

Pour des exemples de chaque fonctionnalité avancée, consultez cet exemple de bloc-notes. Pour la spécification complète d'OpenQASM, consultez le site Web d'OpenQASM.

Opérations et grammaire prises en charge avec OpenPulse

Types de OpenPulse données pris en charge

Blocs d'appels :

cal { ... }

Blocs de décalcomanie :

// 1 qubit defcal x $0 { ... } // 1 qubit w. input parameters as constants defcal my_rx(pi) $0 { ... } // 1 qubit w. input parameters as free parameters defcal my_rz(angle theta) $0 { ... } // 2 qubit (above gate args are also valid) defcal cz $1, $0 { ... }

Cadres :

frame my_frame = newframe(port_0, 4.5e9, 0.0);

Formes d'onde :

// prebuilt waveform my_waveform_1 = constant(1e-6, 1.0); //arbitrary waveform my_waveform_2 = {0.1 + 0.1im, 0.1 + 0.1im, 0.1, 0.1};

Exemple d'étalonnage de portail personnalisé :

cal { waveform wf1 = constant(1e-6, 0.25); } defcal my_x $0 { play(wf1, q0_rf_frame); } defcal my_cz $1, $0 { barrier q0_q1_cz_frame, q0_rf_frame; play(q0_q1_cz_frame, wf1); delay[300ns] q0_rf_frame shift_phase(q0_rf_frame, 4.366186381749424); delay[300ns] q0_rf_frame; shift_phase(q0_rf_frame.phase, 5.916747563126659); barrier q0_q1_cz_frame, q0_rf_frame; shift_phase(q0_q1_cz_frame, 2.183093190874712); } bit[2] ro; my_x $0; my_cz $1,$0; c[0] = measure $0;

Exemple d'impulsion arbitraire :

bit[2] ro; cal { waveform wf1 = {0.1 + 0.1im, 0.1 + 0.1im, 0.1, 0.1}; barrier q0_drive, q0_q1_cross_resonance; play(q0_q1_cross_resonance, wf1); delay[300ns] q0_drive; shift_phase(q0_drive, 4.366186381749424); delay[300dt] q0_drive; barrier q0_drive, q0_q1_cross_resonance; play(q0_q1_cross_resonance, wf1); ro[0] = capture_v0(r0_measure); ro[1] = capture_v0(r1_measure); }
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.