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.
Pulso de freno
Los pulsos son las señales analógicas que controlan los qubits en un ordenador cuántico. Con algunos dispositivos de Amazon Braket, puedes acceder a la función de control de impulsos para enviar circuitos mediante pulsos. Puede acceder al control de impulsos a través del SDK de Braket, OpenQASM 3.0 o directamente a través de las API de Braket. Primero, presentemos algunos conceptos clave para el control de impulsos en Braket.
Frames (Fotogramas)
Un marco es una abstracción de software que actúa como un reloj dentro del programa cuántico y como una fase. La hora del reloj se incrementa con cada uso y se obtiene una señal portadora con estado que se define mediante una frecuencia. Al transmitir señales al cúbit, un marco determina la frecuencia portadora del cúbit, el desplazamiento de fase y el momento en que se emite la envolvente de la forma de onda. En Braket Pulse, la construcción de marcos depende del dispositivo, la frecuencia y la fase. Según el dispositivo, puede elegir un marco predefinido o crear instancias de nuevos marcos proporcionando un puerto.
from braket.pulse import Frame device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3") drive_frame = device.frames["q0_rf_frame"] device = AwsDevice("arn:aws:braket:eu-west-2::device/qpu/oqc/Lucy") readout_frame = Frame(name="r0_measure", port=port0, frequency=5e9, phase=0)
Puertos
Un puerto es una abstracción de software que representa cualquier componente de hardware de entrada/salida que controle los qubits. Ayuda a los proveedores de hardware a proporcionar una interfaz con la que los usuarios puedan interactuar para manipular y observar los cúbits. Los puertos se caracterizan por una sola cadena que representa el nombre del conector. Esta cadena también expone un incremento de tiempo mínimo que especifica con qué precisión podemos definir las formas de onda.
from braket.pulse import Port Port0 = Port("channel_0", dt=1e-9)
Formas de onda
Una forma de onda es una envolvente dependiente del tiempo que podemos usar para emitir señales en un puerto de salida o capturar señales a través de un puerto de entrada. Puede especificar las formas de onda directamente mediante una lista de números complejos o mediante una plantilla de formas de onda para generar una lista del proveedor de hardware.
from braket.pulse import ArbitraryWaveform, ConstantWaveform cst_wfm = ConstantWaveform(length=1e-7, iq=0.1) arb_wf = ArbitraryWaveform(amplitudes=np.linspace(0, 100))
Braket Pulse proporciona una biblioteca estándar de formas de onda, que incluye una forma de onda constante, una forma de onda gaussiana y una forma de onda de eliminación derivada por puerta adiabática (DRAG). Puede recuperar los datos de la forma de onda mediante lasample
función para dibujar la forma de la onda, tal como se muestra en el siguiente ejemplo.
gaussian_waveform = GaussianWaveform(1e-7, 25e-9, 0.1) x = np.arange(0, gaussian_waveform.length, drive_frame.port.dt) plt.plot(x, gaussian_waveform.sample(drive_frame.port.dt))

La imagen anterior muestra las formas de onda gaussianas creadas a partir deGaussianWaveform
. Elegimos una longitud de pulso de 100 ns, una anchura de 25 ns y una amplitud de 0,1 (unidades arbitrarias). Las formas de onda están centradas en la ventana de impulsos. GaussianWaveform
acepta un argumento booleanozero_at_edges
(zAe en la leyenda). Cuando se establece enTrue
, este argumento desvía la forma de onda gaussiana de manera que los puntos de t=0 y t=length
estén en cero y redimensiona su amplitud de manera que el valor máximo corresponda alamplitude
argumento.
Ahora que hemos cubierto los conceptos básicos para el acceso a nivel de impulsos, a continuación veremos cómo construir un circuito mediante puertas y pulsos.