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.
Accès aux portes natives à l'aide d'impulsions
Les chercheurs ont souvent besoin de savoir exactement comment les portes natives prises en charge par un particulier QPU sont mises en œuvre sous forme d'impulsions. Les séquences d'impulsions sont soigneusement calibrées par les fournisseurs de matériel, mais l'accès à celles-ci permet aux chercheurs de concevoir de meilleures portes ou d'explorer des protocoles pour atténuer les erreurs, tels que l'extrapolation sans bruit en étirant les impulsions de portes spécifiques.
Amazon Braket prend en charge l'accès programmatique aux portails natifs de 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/Ankaa-2") calibrations = device.gate_calibrations print(f"Downloaded {len(calibrations)} calibrations.")
Note
Les fournisseurs de matériel les étalonnent régulièrementQPU, souvent plus d'une fois par jour. Le Braket vous SDK permet d'obtenir les derniers étalonnages de portail.
device.refresh_gate_calibrations()
Pour récupérer une porte native donnée, telle que la porte RX ou XY, vous devez transmettre l'Gate
objet et les qubits qui vous intéressent. Par exemple, vous pouvez inspecter l'implémentation des impulsions du RX (π/2) appliqué sur qubit 0.
rx_pi_2_q0 = (Rx(math.pi/2), QubitSet(0)) pulse_sequence_rx_pi_2_q0 = calibrations.pulse_sequences[rx_pi_2_q0]
Vous pouvez créer un ensemble filtré d'étalonnages à l'aide de cette filter
fonction. Vous passez une liste de portes ou une liste deQubitSet
. Le code suivant crée deux ensembles contenant tous les étalonnages pour RX (π/2) et pour qubit 0.
rx_calibrations = calibrations.filter(gates=[Rx(math.pi/2)]) q0_calibrations = calibrations.filter(qubits=QubitSet([0])
Vous pouvez désormais fournir ou modifier l'action des portes natives en joignant un ensemble de calibrage personnalisé. Par exemple, considérez le circuit suivant.
bell_circuit = ( Circuit() .rx(0,math.pi/2) .rx(1,math.pi/2) .iswap(0,1) .rx(1,-math.pi/2) )
Vous pouvez l'exécuter avec un calibrage de porte personnalisé pour la rx
porte qubit 0
en transmettant un dictionnaire d'PulseSequence
objets à l'argument du gate_definitions
mot clé. Vous pouvez créer un dictionnaire à partir de l'attribut pulse_sequences
de l'GateCalibrations
objet. Toutes les portes non spécifiées sont remplacées par l'étalonnage des impulsions du fournisseur de matériel quantique.
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)