Accesso ai gate nativi tramite impulsi - 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à.

Accesso ai gate nativi tramite impulsi

I ricercatori spesso hanno bisogno di sapere esattamente come le porte native supportate da una particolare QPU vengono implementate come impulsi. Le sequenze di impulsi vengono calibrate con cura dai fornitori di hardware, ma accedervi offre ai ricercatori l'opportunità di progettare gate migliori o di esplorare protocolli per la mitigazione degli errori, come l'estrapolazione a zero rumore mediante l'allungamento degli impulsi di porte specifiche.

Amazon Braket supporta l'accesso programmatico ai gate nativi di Rigetti.

import math from braket.aws import AwsDevice from braket.circuits import Circuit, GateCalibrations, QubitSet from braket.circuits.gates import Rx device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3") calibrations = device.gate_calibrations print(f"Downloaded {len(calibrations)} calibrations.")
Nota

I fornitori di hardware calibrano periodicamente la QPU, spesso più di una volta al giorno. L'SDK Braket consente di ottenere le calibrazioni dei gate più recenti.

device.refresh_gate_calibrations()

Per recuperare un determinato gate nativo, come il gate RX o XY, è necessario passare l'Gateoggetto e i qubit di interesse. Ad esempio, è possibile controllare l'implementazione a impulsi del RX (π /2) applicato su 0. qubit

rx_pi_2_q0 = (Rx(math.pi/2), QubitSet(0)) pulse_sequence_rx_pi_2_q0 = calibrations.pulse_sequences[rx_pi_2_q0]

È possibile creare un set filtrato di calibrazioni utilizzando la funzione. filter Si passa un elenco di porte o un elenco di. QubitSet Il codice seguente crea due set che contengono tutte le calibrazioni per RX (π /2) e per 0. qubit

rx_calibrations = calibrations.filter(gates=[Rx(math.pi/2)]) q0_calibrations = calibrations.filter(qubits=QubitSet([0])

Ora puoi fornire o modificare l'azione delle porte native collegando un set di calibrazione personalizzato. Ad esempio, si consideri il seguente circuito.

bell_circuit = ( Circuit() .rx(0,math.pi/2) .rx(1,math.pi/2) .cz(0,1) .rx(1,-math.pi/2) )

Puoi eseguirlo con una calibrazione di gate personalizzata per il rx gate on qubit 0 passando un dizionario di PulseSequence oggetti all'argomento della gate_definitions parola chiave. È possibile costruire un dizionario dall'attributo pulse_sequences dell'GateCalibrationsoggetto. Tutte le porte non specificate vengono sostituite con la calibrazione a impulsi del fornitore di hardware quantistico.

nb_shots = 50 custom_calibration = GateCalibrations({rx_pi_2_q0: pulse_sequence_rx_pi_2_q0}) task=device.run(bell_circuit, gate_definitions=custom_calibration.pulse_sequences, shots=nb_shots)