Mengakses gerbang asli menggunakan pulsa - Amazon Braket

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)