Braket Pulse - 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.

Braket Pulse

Los pulsos son las señales analógicas que controlan los cúbits en un ordenador cuántico. Con algunos dispositivos de Amazon Braket, puedes acceder a la función de control de pulsos para enviar circuitos mediante pulsos. Puede acceder al control de pulsos a través del SDK de Braket, mediante OpenQASM 3.0, o directamente a través de las API de Braket. Primero, presentemos algunos conceptos clave para el control de pulsos en Braket.

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 con cada 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 desfase y el momento en el 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 marcos nuevos 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 pueden 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 la precisión con la que 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 utilizar 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 forma de onda para generar una lista del proveedor del 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 de derivadas mediante compuerta adiabática (DRAG). Puede recuperar los datos de la forma de onda a través de la sample función para dibujar la forma de la onda, 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))
Gráfico que muestra la amplitud a lo largo del tiempo en dos casos: zAe = verdadero (curva inferior) y zAe = falso (curva superior). Las curvas tienen forma de campana y alcanzan su punto máximo en torno a 0,5 segundos con una amplitud de 0,10 a. u..

La imagen anterior muestra las formas de onda gaussianas creadas a partir de. GaussianWaveform 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 pulsos. GaussianWaveformacepta un argumento booleano zero_at_edges (zAe en la leyenda). Cuando se establece enTrue, este argumento desplaza la forma de onda gaussiana de manera que los puntos en t=0 y t= length estén en cero y cambia la escala de su amplitud de manera que el valor máximo corresponda al argumento. amplitude

Ahora que hemos explicado los conceptos básicos del acceso a nivel de pulsos, a continuación veremos cómo construir un circuito utilizando compuertas y pulsos.