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.
In questa sezione:
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
LocalSimulator
Supporta 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
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); }