Quali QASM funzionalità Open supporta Braket? - Amazon Braket

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à.

Quali QASM funzionalità Open supporta Braket?

La sezione seguente elenca i tipi di dati, le istruzioni e le istruzioni pragmatiche di Open QASM 3.0 supportate da Braket.

Tipi di dati Open supportati QASM

I seguenti tipi di QASM dati aperti sono supportati da Amazon Braket.

  • Gli interi non negativi vengono utilizzati per gli indici qubit (virtuali e fisici):

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

    • h $0;

  • È possibile utilizzare numeri o costanti a virgola mobile per gli angoli di rotazione del cancello:

    • rx(-0.314) $0;

    • rx(pi/4) $0;

Nota

pi è una costante incorporata in Open QASM e non può essere utilizzata come nome di parametro.

  • Le matrici di numeri complessi (con la QASM im notazione Open per la parte immaginaria) sono consentite nei pragmi di tipo di risultato per la definizione di osservabili hermitiane generali e nei pragmi unitari:

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

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

Dichiarazioni Open supportate QASM

Le seguenti QASM istruzioni Open sono supportate da Amazon Braket.

  • Header: OPENQASM 3;

  • Dichiarazioni di bit classiche:

    • bit b1;(equivalentemente,) creg b1;

    • bit[10] b2;(equivalentemente,) creg b2[10];

  • Dichiarazioni Qubit:

    • qubit b1;(equivalentemente,) qreg b1;

    • qubit[10] b2;(equivalentemente,) qreg b2[10];

  • Indicizzazione all'interno di array: q[0]

  • Ingresso: input float alpha;

  • specificazione fisicaqubits: $0

  • Porte e operazioni supportate su un dispositivo:

    • h $0;

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

Nota

Le porte supportate da un dispositivo sono disponibili nelle proprietà del dispositivo per QASM le azioni Apri; non sono necessarie definizioni di porte per utilizzare queste porte.

  • Dichiarazioni letterali. Al momento, non supportiamo la notazione della durata delle caselle. Le porte native e fisiche qubits sono obbligatorie nelle caselle letterali.

#pragma braket verbatim box{ rx(0.314) $0; }
  • Misurazione e assegnazione delle misurazioni su qubits o su un intero registro. qubit

    • measure $0;

    • measure q;

    • measure q[0];

    • b = measure q;

    • measure q → b;

Nota

pi è una costante incorporata in Open QASM e non può essere utilizzata come nome di parametro.

Pragmi Braket Open QASM

Le seguenti istruzioni di Open QASM pragma sono supportate da Braket. Amazon

  • Pragmi del rumore

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

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

    • #pragma braket noise pauli_channel

  • Pragmi letterali

    • #pragma braket verbatim

  • Tipo di risultato: pragmi

    • Tipi di risultati invarianti di base:

      • Vettore di stato: #pragma braket result state_vector

      • Matrice di densità: #pragma braket result density_matrix

    • Pragmi di calcolo del gradiente:

      • Gradiente aggiunto: #pragma braket result adjoint_gradient expectation(2.2 * x[0] @ x[1]) all

    • Tipi di risultati di base Z:

      • Ampiezza: #pragma braket result amplitude "01"

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

    • Tipi di risultati ruotati di base

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

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

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

Nota

Open QASM 3.0 è retrocompatibile con Open QASM 2.0, quindi i programmi scritti utilizzando 2.0 possono essere eseguiti su Braket. Tuttavia, le funzionalità di Open QASM 3.0 supportate da Braket presentano alcune differenze di sintassi minori, come qreg vs e vs. creg qubit bit Esistono anche differenze nella sintassi di misurazione e queste devono essere supportate con la sintassi corretta.

Supporto di funzionalità avanzate per Open QASM on the Local Simulator

LocalSimulatorSupporta QASM funzionalità Open avanzate che non sono offerte come parte dei simulatori di Braket o on-demand. QPU Il seguente elenco di funzionalità è supportato solo in: LocalSimulator

  • Modificatori di gate

  • Cancelli integrati aperti QASM

  • Variabili classiche

  • Operazioni classiche

  • Cancelli personalizzati

  • Controllo classico

  • QASMfile

  • Sottoroutine

Per esempi di ogni funzionalità avanzata, consultate questo taccuino di esempio. Per le QASM specifiche complete di Open, consultate il QASMsito Web Open.

Operazioni e grammatica supportate con OpenPulse

Tipi di OpenPulse dati supportati

Blocchi Cal:

cal { ... }

Blocchi Defcal:

// 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 { ... }

Cornici:

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

Forme d'onda:

// 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};

Esempio di calibrazione Custom Gate:

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;

Esempio di impulso arbitrario:

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); }