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à.
Controllo a impulsi su Amazon Braket
Gli impulsi sono i segnali analogici che controllano i qubit in un computer quantistico. Con alcuni dispositivi su Amazon Braket, puoi accedere alla funzione di controllo degli impulsi per inviare circuiti utilizzando impulsi. Puoi accedere al controllo degli impulsi tramite BraketSDK, utilizzando Open QASM 3.0 o direttamente tramite Braket. APIs Innanzitutto, introduciamo alcuni concetti chiave per il controllo degli impulsi in Braket.
In questa sezione:
Frames (Fotogrammi)
Un frame è un'astrazione software che funge sia da orologio all'interno del programma quantistico che da fase. L'ora dell'orologio viene incrementata a ogni utilizzo e viene generato un segnale portante statico definito da una frequenza. Quando si trasmettono segnali al qubit, un frame determina la frequenza portante del qubit, l'offset di fase e l'ora in cui viene emesso l'inviluppo della forma d'onda. In Braket Pulse, la costruzione dei frame dipende dal dispositivo, dalla frequenza e dalla fase. A seconda del dispositivo, potete scegliere un frame predefinito o creare un'istanza di nuovi frame fornendo una porta.
from braket.pulse import Frame # predefined frame from a device device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-2") drive_frame = device.frames["Transmon_5_charge_tx_frame"] # create a custom frame readout_frame = Frame(name="r0_measure", port=port0, frequency=5e9, phase=0)
Porte
Una porta è un'astrazione software che rappresenta qualsiasi componente hardware di input/output che controlla i qubit. Aiuta i fornitori di hardware a fornire un'interfaccia con cui gli utenti possono interagire per manipolare e osservare i qubit. Le porte sono caratterizzate da una singola stringa che rappresenta il nome del connettore. Questa stringa mostra anche un incremento di tempo minimo che specifica con quanta precisione possiamo definire le forme d'onda.
from braket.pulse import Port Port0 = Port("channel_0", dt=1e-9)
Forme d'onda
Una forma d'onda è un involucro dipendente dal tempo che possiamo usare per emettere segnali su una porta di uscita o acquisire segnali attraverso una porta di ingresso. È possibile specificare le forme d'onda direttamente tramite un elenco di numeri complessi o utilizzando un modello di forma d'onda per generare un elenco fornito dal fornitore di hardware.
from braket.pulse import ArbitraryWaveform, ConstantWaveform cst_wfm = ConstantWaveform(length=1e-7, iq=0.1) arb_wf = ArbitraryWaveform(amplitudes=np.linspace(0, 100))
Braket Pulse fornisce una libreria standard di forme d'onda, tra cui una forma d'onda costante, una forma d'onda gaussiana e una forma d'onda Derivative Removal by Adiabatic Gate (). DRAG È possibile recuperare i dati della forma d'onda tramite la funzione per disegnare la forma della forma d'onda, come mostrato nell'esempio seguente. sample
gaussian_waveform = GaussianWaveform(1e-7, 25e-9, 0.1) x = np.arange(0, gaussian_waveform.length, drive_frame.port.dt) plt.plot(x, gaussian_waveform.sample(drive_frame.port.dt))
L'immagine precedente mostra le forme d'onda gaussiane create da. GaussianWaveform
Abbiamo scelto una lunghezza dell'impulso di 100 ns, una larghezza di 25 ns e un'ampiezza di 0,1 (unità arbitrarie). Le forme d'onda sono centrate nella finestra degli impulsi. GaussianWaveform
accetta un argomento booleano zero_at_edges
(zAe nella legenda). Se impostato suTrue
, questo argomento compensa la forma d'onda gaussiana in modo tale che i punti in t=0 e t= length
siano a zero e ne ridimensiona l'ampiezza in modo che il valore massimo corrisponda all'argomento. amplitude
Ora che abbiamo trattato i concetti di base per l'accesso a livello di impulsi, vedremo ora come costruire un circuito usando porte e impulsi.