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.
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 de Rigetti y IonQ dispositivos.
//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 GetDevice
respuesta. En el siguiente ejemplo, se muestra este pulse
campo para Rigetti dispositivo.
// 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
}
}
}
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 por defecto 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 se puede declarar cal
o defcal
no en el OpenPulse newframe
función. Si esto es falso, en el programa solo se pueden utilizar los fotogramas enumerados en la estructura de marcos.
SupportedFunctions:
Describe las OpenPulse las funciones compatibles con el dispositivo, además de los argumentos asociados, los tipos de argumentos y los tipos de retorno para las funciones determinadas. Para ver ejemplos del uso de OpenPulse funciones, consulte la OpenPulseespecificación
-
shift_phase
-
Cambia la fase de un fotograma según un valor especificado
-
-
set_phase
-
Establece la fase del fotograma en el valor especificado
-
-
swap_phases
-
Intercambia las fases entre dos fotogramas.
-
-
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

τ
es la longitud de la forma de onda y iq
es un número complejo.
def constant(length, iq)
gaussiano

τ
es la longitud de la onda, es la anchura 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

τ
es la longitud de la forma de onda, σ
es el ancho de la gaussiana, es un parámetro libre y es la amplitud. β
A
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
def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)
Erf Square
Dónde L
está la longitud, W
es el ancho de la forma de onda, σ
define qué tan rápido suben y bajan los bordes y, es la amplitud. t1=(L−W)/2
t22=(L+W)/2
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
La siguiente ecuación es la versión reescalada de la forma de onda.
Dónde y. a=erf(W/2σ)
b=erf(−t1/σ)/2+erf(t2/σ)/2
def erf_square(length, width, sigma, amplitude=1, zero_at_edges=False)
SupportsLocalPulseElements:
Describe si los elementos de impulso, como puertos, tramas y formas de onda, pueden definirse localmente en defcal
bloques o no. 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, que incluyen:
-
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, puede consultar la braket.ir.openqasm.program
clave que aparece en el action
campo del resultado 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
}
]
}
},
...