Support para OpenQASM en diferentes dispositivos de frenos - 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.

Support para OpenQASM en diferentes dispositivos de frenos

Para los dispositivos compatibles con OpenQASM 3.0, elaction campo admite una nueva acción a través de laGetDevice respuesta, como se muestra en el siguiente ejemplo para losIonQ dispositivosRigetti y.

//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, elpulse campo se muestra en laGetDevice respuesta. En los siguientes ejemplos se muestra estepulse campo para losOQC dispositivosRigetti 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 del puerto determinado. Todos los puertos que figuran en esta estructura están declarados previamente como identificadores válidos dentro delOpenQASM 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 impulsos (dirección «tx»), mientras que los puertos de medición reciben impulsos (dirección «rx»).

  • Tipo de puerto (PortType)

    • El tipo de acción de la que es responsable este puerto (por ejemplo, drive, capture o ff - fast-flux).

  • 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 con el puerto especificado.

  • Frecuencias centrales (frecuencias centrales)

    • Una lista de las frecuencias centrales asociadas a todos los fotogramas predeclarados o definidos por el usuario en el puerto. Para obtener más información, consulte Framas.

  • 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 que figuran en esta estructura se declaran previamente como identificadores válidos dentro delOpenQASM 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 (ID de puerto)

    • El puerto de hardware asociado al marco.

  • Frecuencia (frecuencia)

    • La frecuencia inicial por defecto del fotograma.

  • Frecuencia central (frecuencia central)

    • El centro del ancho de banda de frecuencia del marco. Normalmente, los marcos 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 por defecto del fotograma.

  • Puerta asociada (AssociatedGate)

    • Las puertas asociadas con el marco especificado.

  • Mapeos de qubits (QubitMappings)

    • Los qubits asociados con el cuadro especificado.

  • 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 laOpenPulsenewframe funcióncal odefcal bloquearse a través de ella. Si esto es falso, solo los marcos que figuran en la estructura de marcos se pueden usar dentro del programa.

SupportedFunctions:

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

  • shift_phase

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

  • fijar_fase

    • Establece la fase del fotograma en el valor especificado

  • shift_frequency

    • Cambia la frecuencia de un fotograma en un valor especificado

  • fijar_frecuencia

    • Establece la frecuencia del fotograma en el valor especificado

  • jugar

    • Programa una forma de onda

  • capturar_v0

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

SupportedQhpTemplateWaveforms:

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

Constante


               ConstantFunction

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

def constant(length, iq)

gaussiano


               GaussianFunction

τes la longitud de la forma de onda,σ es el ancho de la gaussiana yA es la amplitud. Si se estableceZaE 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 elA máximo.

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

DRAG gaussiano


               ARRASTRARGaussianFunction

τes la longitud de la forma de onda,σ es el ancho de la gaussiana,β es un parámetro libre yA es la amplitud. Si se estableceZaE enTrue, el gaussiano de eliminación de derivadas mediante puerta adiabática (DRAG) se desplaza y se cambia de escala de manera que sea igual a cero al principio y al final de la forma de onda, y la parte real alcance elA máximo. Para obtener más información sobre la forma de onda DRAG, consulte el paper 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 pulso, como los puertos, los marcos y las formas de onda, pueden definirse localmente endefcal bloques. Si el valor esfalse, los elementos deben definirse encal bloques.

SupportsNonNativeGatesWithPulses:

Describe si podemos o no usar puertas no nativas en combinación con programas de impulsos. Por ejemplo, no podemos usar una puerta no nativa como unaH puerta en un programa sin definir primero la puerta de pasodefcal para el qubit usado. Puede encontrar la lista denativeGateSet claves de puertas nativas en las capacidades del dispositivo.

ValidationParameters:

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

  • Valores de escala máxima/amplitud máxima para 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 labraket.ir.openqasm.program clave en elaction campo de la salida de capacidades del dispositivo. Por ejemplo, las siguientes son las operaciones compatibles y los tipos de resultados disponibles para el simulador Braket State VectorSV1.

... "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 } ] } }, ...