Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengakses gerbang asli menggunakan pulsa
Para peneliti sering perlu tahu persis bagaimana gerbang asli yang didukung oleh QPU tertentu diimplementasikan sebagai pulsa. Urutan pulsa dikalibrasi dengan hati-hati oleh penyedia perangkat keras, tetapi mengaksesnya memberi peneliti kesempatan untuk merancang gerbang yang lebih baik atau mengeksplorasi protokol untuk mitigasi kesalahan seperti ekstrapolasi nol kebisingan dengan meregangkan pulsa gerbang tertentu.
Amazon Braket mendukung akses terprogram ke gerbang asli dari 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.")
catatan
Penyedia perangkat keras secara berkala mengkalibrasi QPU, seringkali lebih dari sekali sehari. Braket SDK memungkinkan Anda mendapatkan kalibrasi gerbang terbaru.
device.refresh_gate_calibrations()
Untuk mengambil gerbang asli yang diberikan, seperti gerbang RX atau XY, Anda harus melewati Gate
objek dan qubit yang diinginkan. Misalnya, Anda dapat memeriksa implementasi pulsa RX (π/2) yang diterapkan pada 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]
Anda dapat membuat serangkaian kalibrasi yang difilter menggunakan filter
fungsi tersebut. Anda melewati daftar gerbang atau daftarQubitSet
. Kode berikut membuat dua set yang berisi semua kalibrasi untuk RX (π/2) dan untuk 0. qubit
rx_calibrations = calibrations.filter(gates=[Rx(math.pi/2)]) q0_calibrations = calibrations.filter(qubits=QubitSet([0])
Sekarang Anda dapat memberikan atau memodifikasi aksi gerbang asli dengan melampirkan set kalibrasi khusus. Misalnya, perhatikan rangkaian berikut.
bell_circuit = ( Circuit() .rx(0,math.pi/2) .rx(1,math.pi/2) .cz(0,1) .rx(1,-math.pi/2) )
Anda dapat menjalankannya dengan kalibrasi gerbang khusus untuk rx
gerbang qubit 0
dengan meneruskan kamus PulseSequence
objek ke argumen gate_definitions
kata kunci. Anda dapat membuat kamus pulse_sequences
dari atribut GateCalibrations
objek. Semua gerbang yang tidak ditentukan diganti dengan kalibrasi pulsa penyedia perangkat keras kuantum.
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)