Acceso a puertas nativas mediante pulsos - Amazon Braket

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceso a puertas nativas mediante pulsos

Los investigadores a menudo necesitan saber exactamente cómo se implementan como pulsos las puertas nativas compatibles con una QPU en particular. Las secuencias de pulsos son cuidadosamente calibradas por los proveedores de hardware, pero acceder a ellas brinda a los investigadores la oportunidad de diseñar mejores puertas o explorar protocolos para la mitigación de errores, como la extrapolación de ruido cero mediante el alargamiento de los pulsos de puertas específicas.

Amazon Braket admite el acceso programático a las puertas nativas 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-3") calibrations = device.gate_calibrations print(f"Downloaded {len(calibrations)} calibrations.")
nota

Los proveedores de hardware calibran periódicamente la QPU, a menudo más de una vez al día. El SDK de Braket le permite obtener las calibraciones de puertas más recientes.

device.refresh_gate_calibrations()

Para recuperar una puerta nativa determinada, como la puerta RX o XY, debe pasar el objeto Gate y los qubits de interés. Por ejemplo, puede inspeccionar la implementación de pulso del RX (π /2) aplicado a 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]

Puede crear un conjunto filtrado de calibraciones mediante la función filter. Pasa una lista de puertas o una lista de QubitSet. El siguiente código crea dos conjuntos que contienen todas las calibraciones de RX (π /2) y de qubit 0.

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

Ahora puede proporcionar o modificar la acción de las puertas nativas adjuntando un conjunto de calibración personalizado. Por ejemplo, considere el siguiente circuito:

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

Puede ejecutarlo con una calibración de puerta personalizada para la puerta rx en qubit 0 pasando un diccionario de objetos PulseSequence al argumento de la palabra clave gate_definitions. Puede construir un diccionario a partir del atributo pulse_sequences del objeto GateCalibrations. Todas las puertas no especificadas se sustituyen por la calibración de pulso del proveedor de hardware cuántico.

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)