Support para OpenQASM en diferentes dispositivos Braket - Amazon Braket

¡Aprenda los fundamentos de la computación cuántica con! AWS Inscríbase en el plan de aprendizaje digital Amazon Braket y obtenga su propia insignia digital tras completar una serie de cursos de aprendizaje y una evaluación digital.

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.

Support para OpenQASM en diferentes dispositivos Braket

En el caso de los dispositivos compatibles con OpenQASM 3.0, el action campo admite una nueva acción a través de la GetDevice respuesta, como se muestra en el siguiente ejemplo para los dispositivos y. Rigetti IonQ

//OpenQASM as available with the Rigetti device capabilities { "braketSchemaHeader": { "name": "braket.device_schema.rigetti.rigetti_device_capabilities", "version": "1" }, "service": {...}, "action": { "braket.ir.jaqcd.program": {...}, "braket.ir.openqasm.program": { "actionType": "braket.ir.openqasm.program", "version": [ "1" ], …. } } } //OpenQASM as available with the IonQ device capabilities { "braketSchemaHeader": { "name": "braket.device_schema.ionq.ionq_device_capabilities", "version": "1" }, "service": {...}, "action": { "braket.ir.jaqcd.program": {...}, "braket.ir.openqasm.program": { "actionType": "braket.ir.openqasm.program", "version": [ "1" ], …. } } }

En el caso de los dispositivos que admiten el control de impulsos, el pulse campo se muestra en la respuesta. GetDevice Los siguientes ejemplos muestran este pulse campo para los OQC dispositivos Rigetti y.

// Rigetti { "pulse": { "braketSchemaHeader": { "name": "braket.device_schema.pulse.pulse_device_action_properties", "version": "1" }, "supportedQhpTemplateWaveforms": { "constant": { "functionName": "constant", "arguments": [ { "name": "length", "type": "float", "optional": false }, { "name": "iq", "type": "complex", "optional": false } ] }, ... }, "ports": { "q0_ff": { "portId": "q0_ff", "direction": "tx", "portType": "ff", "dt": 1e-9, "centerFrequencies": [ 375000000 ] }, ... }, "supportedFunctions": { "shift_phase": { "functionName": "shift_phase", "arguments": [ { "name": "frame", "type": "frame", "optional": false }, { "name": "phase", "type": "float", "optional": false } ] }, ... }, "frames": { "q0_q1_cphase_frame": { "frameId": "q0_q1_cphase_frame", "portId": "q0_ff", "frequency": 462475694.24460185, "centerFrequency": 375000000, "phase": 0, "associatedGate": "cphase", "qubitMappings": [ 0, 1 ] }, ... }, "supportsLocalPulseElements": false, "supportsDynamicFrames": false, "supportsNonNativeGatesWithPulses": false, "validationParameters": { "MAX_SCALE": 4, "MAX_AMPLITUDE": 1, "PERMITTED_FREQUENCY_DIFFERENCE": 400000000 } } } // OQC { "pulse": { "braketSchemaHeader": { "name": "braket.device_schema.pulse.pulse_device_action_properties", "version": "1" }, "supportedQhpTemplateWaveforms": { "gaussian": { "functionName": "gaussian", "arguments": [ { "name": "length", "type": "float", "optional": false }, { "name": "sigma", "type": "float", "optional": false }, { "name": "amplitude", "type": "float", "optional": true }, { "name": "zero_at_edges", "type": "bool", "optional": true } ] }, ... }, "ports": { "channel_1": { "portId": "channel_1", "direction": "tx", "portType": "port_type_1", "dt": 5e-10, "qubitMappings": [ 0 ] }, ... }, "supportedFunctions": { "new_frame": { "functionName": "new_frame", "arguments": [ { "name": "port", "type": "port", "optional": false }, { "name": "frequency", "type": "float", "optional": false }, { "name": "phase", "type": "float", "optional": true } ] }, ... }, "frames": { "q0_drive": { "frameId": "q0_drive", "portId": "channel_1", "frequency": 5500000000, "centerFrequency": 5500000000, "phase": 0, "qubitMappings": [ 0 ] }, ... }, "supportsLocalPulseElements": false, "supportsDynamicFrames": true, "supportsNonNativeGatesWithPulses": true, "validationParameters": { "MAX_SCALE": 1, "MAX_AMPLITUDE": 1, "PERMITTED_FREQUENCY_DIFFERENCE": 1, "MIN_PULSE_LENGTH": 8e-9, "MAX_PULSE_LENGTH": 0.00012 } } }

Los campos anteriores detallan lo siguiente:

Puertos:

Describe los puertos de dispositivos externos (extern) prefabricados declarados en la QPU, además de las propiedades asociadas al puerto en cuestión. Todos los puertos enumerados en esta estructura se declaran previamente como identificadores válidos en el OpenQASM 3.0 programa enviado por el usuario. Las propiedades adicionales de un puerto incluyen:

  • ID de puerto (PortID)

    • El nombre del puerto declarado como identificador en OpenQASM 3.0.

  • Dirección (dirección)

    • La dirección del puerto. Los puertos de accionamiento transmiten pulsos (dirección «tx»), mientras que los puertos de medición reciben pulsos (dirección «rx»).

  • Tipo de puerto (PortType)

    • El tipo de acción de la que es responsable este puerto (por ejemplo, conducir, capturar o desactivar el flujo rápido).

  • Dt (dt)

    • El tiempo en segundos que representa un único paso de tiempo de muestreo en el puerto dado.

  • Mapeos de qubits (QubitMappings)

    • Los qubits asociados al puerto dado.

  • Frecuencias centrales (CenterFrequencies)

    • Una lista de las frecuencias centrales asociadas a todas las tramas predeclaradas o definidas por el usuario en el puerto. Para obtener más información, consulte Frames.

  • Propiedades específicas de QHP () qhpSpecificProperties

    • Un mapa opcional que detalla las propiedades existentes sobre el puerto específico del QHP.

Marcos:

Describe los marcos externos prefabricados declarados en la QPU, así como las propiedades asociadas a los marcos. Todos los marcos enumerados en esta estructura se declaran previamente como identificadores válidos en el OpenQASM 3.0 programa enviado por el usuario. Las propiedades adicionales de un marco incluyen:

  • ID de marco (FrameID)

    • El nombre del marco declarado como identificador en OpenQASM 3.0.

  • ID de puerto (PortID)

    • El puerto de hardware asociado al marco.

  • Frecuencia (frecuencia)

    • La frecuencia inicial predeterminada del fotograma.

  • Frecuencia central (CenterFrequency)

    • El centro del ancho de banda de frecuencia del marco. Por lo general, las tramas solo se pueden ajustar a un cierto ancho de banda alrededor de la frecuencia central. Como resultado, los ajustes de frecuencia deben permanecer dentro de un delta determinado de la frecuencia central. Puede encontrar el valor del ancho de banda en los parámetros de validación.

  • Fase (fase)

    • La fase inicial predeterminada del fotograma.

  • Puerta asociada (AssociatedGate)

    • Las puertas asociadas al marco dado.

  • Mapeos de qubits (QubitMappings)

    • Los qubits asociados al fotograma dado.

  • Propiedades específicas de QHP () qhpSpecificProperties

    • Un mapa opcional que detalla las propiedades existentes sobre el marco específico del QHP.

SupportsDynamicFrames:

Describe si un marco puede declararse o no en la OpenPulse newframe función cal o defcal bloquearse a través de ella. Si es falsa, en el programa solo se pueden utilizar los marcos que figuran en la estructura de marcos.

SupportedFunctions:

Describe las OpenPulse funciones compatibles con el dispositivo, además de los argumentos asociados, los tipos de argumentos y los tipos de retorno de las funciones determinadas. Para ver ejemplos del uso de las OpenPulse funciones, consulte la OpenPulseespecificación. En este momento, Braket admite:

  • shift_phase

    • Cambia la fase de un fotograma según un valor especificado

  • set_phase

    • Establece la fase del fotograma en el valor especificado

  • shift_frequency

    • Cambia la frecuencia de un fotograma según un valor especificado

  • set_frequency

    • Establece la frecuencia del fotograma en el valor especificado

  • jugar

    • Programa una forma de onda

  • capture_v0

    • Devuelve el valor de un fotograma de captura a un registro de bits

SupportedQhpTemplateWaveforms:

Describe las funciones de forma de onda predefinidas disponibles en el dispositivo y los argumentos y tipos asociados. De forma predeterminada, Braket Pulse ofrece rutinas de formas de onda predefinidas en todos los dispositivos, que son:

Constante


               ConstantFunction

τes la longitud de la forma de onda y iq es un número complejo.

def constant(length, iq)

gaussiano


               GaussianFunction

τes la longitud de la onda, σ es el ancho de la gaussiana y es la amplitud. A Si se establece ZaE enTrue, el gaussiano se desplaza y se reescala de manera que sea igual a cero al principio y al final de la forma de onda y alcance su valor máximo. A

def gaussian(length, sigma, amplitude=1, zero_at_edges=False)

ARRASTRE EL GAUSSIANO


               ARRASTRAR GaussianFunction

τes la longitud de la onda, σ es el ancho de la gaussiana, β es un parámetro libre y A es la amplitud. Si se establece ZaE enTrue, el gaussiano Eliminación de derivadas por puerta adiabática (DRAG) se desplaza y se reescala de manera que sea igual a cero al principio y al final de la forma de onda, y la parte real alcance su valor máximo. A Para obtener más información sobre la forma de onda DRAG, consulte el artículo Pulsos simples para la eliminación de fugas en cúbits débilmente no lineales.

def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)

SupportsLocalPulseElements:

Describe si los elementos de impulso, como puertos, tramas y formas de onda, pueden definirse localmente en bloques o no. defcal Si el valor esfalse, los elementos se deben definir en cal bloques.

SupportsNonNativeGatesWithPulses:

Describe si podemos o no usar puertas no nativas en combinación con programas de pulsos. Por ejemplo, no podemos usar una puerta no nativa como una H puerta en un programa sin definir primero la puerta de entrada defcal para el qubit utilizado. Puedes encontrar la lista de puertas nativas nativeGateSet clave en las capacidades del dispositivo.

ValidationParameters:

Describe los límites de validación de los elementos de impulso, incluidos:

  • Valores de escala máxima y amplitud máxima para las formas de onda (arbitrarios y prediseñados)

  • Ancho de banda de frecuencia máximo a partir de la frecuencia central suministrada en Hz

  • Longitud/duración mínima del pulso en segundos

  • Longitud/duración máxima del pulso en segundos

Operaciones, resultados y tipos de resultados compatibles con OpenQASM

Para saber qué funciones de OpenQASM 3.0 admite cada dispositivo, consulte la braket.ir.openqasm.program clave que aparece en el action campo de la salida de capacidades del dispositivo. Por ejemplo, a continuación se muestran las operaciones y los tipos de resultados compatibles disponibles para el simulador Braket State Vector. SV1

... "action": { "braket.ir.jaqcd.program": { ... }, "braket.ir.openqasm.program": { "version": [ "1.0" ], "actionType": "braket.ir.openqasm.program", "supportedOperations": [ "ccnot", "cnot", "cphaseshift", "cphaseshift00", "cphaseshift01", "cphaseshift10", "cswap", "cy", "cz", "h", "i", "iswap", "pswap", "phaseshift", "rx", "ry", "rz", "s", "si", "swap", "t", "ti", "v", "vi", "x", "xx", "xy", "y", "yy", "z", "zz" ], "supportedPragmas": [ "braket_unitary_matrix" ], "forbiddenPragmas": [], "maximumQubitArrays": 1, "maximumClassicalArrays": 1, "forbiddenArrayOperations": [ "concatenation", "negativeIndex", "range", "rangeWithStep", "slicing", "selection" ], "requiresAllQubitsMeasurement": true, "supportsPhysicalQubits": false, "requiresContiguousQubitIndices": true, "disabledQubitRewiringSupported": false, "supportedResultTypes": [ { "name": "Sample", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 1, "maxShots": 100000 }, { "name": "Expectation", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 0, "maxShots": 100000 }, { "name": "Variance", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 0, "maxShots": 100000 }, { "name": "Probability", "minShots": 1, "maxShots": 100000 }, { "name": "Amplitude", "minShots": 0, "maxShots": 0 } { "name": "AdjointGradient", "minShots": 0, "maxShots": 0 } ] } }, ...