IBMBackend
class IBMBackend(configuration, service, api_client, instance=None, calibration_id=None)
Bases: BackendV2
Clase de backend que interactúa con un backend de IBM Quantum.
- No debe instanciar directamente la clase
IBMBackend. En su lugar, utilice los métodos proporcionados por una instanciaQiskitRuntimeServicepara recuperar y manejar backends.
Esta clase representa un backend de IBM Quantum. Sus atributos y métodos proporcionan información sobre el backend. Por ejemplo, el método status() devuelve una instancia de BackendStatus . La instancia contiene los atributos operational y pending_jobs , que indican si el backend está operativo y también el número de trabajos en la cola del servidor para el backend, respectivamente:
status = backend.status()
is_operational = status.operational
jobs_in_queue = status.pending_jobsEsta es la lista de atributos disponibles en la clase IBMBackend :
nombre: backend nombre.
backend_version: versión del backend en la forma X.Y.Z.
num_qubits: número de qubits.
objetivo: A
qiskit.transpiler.Targetobjeto para el backend.basis\gates: lista de nombres de puertas base en el backend.
puertas: lista de puertas de base en el backend.
local: el backend es local o remoto.
simulador: el backend es un simulador.
condicional: el backend admite operaciones condicionales.
open_pulse: el backend admite pulso abierto.
memoria: el backend admite memoria.
coupling_map (lista): El mapa de acoplamiento del dispositivo
supported_instructions ( [Liststr] ): Instrucciones soportadas por el backend.
dynamic_reprate_enabled (bool): si el retardo entre primitivas puede establecerse dinámicamente (es decir, a través de
rep_delay). El valor predeterminado es False.rep_delay_range ( [Listfloat] ): 2d lista que define el rango soportado de retardos de repetición para el backend en μs. La primera entrada corresponde al extremo inferior del intervalo, la segunda al extremo superior. Opcional, pero se especificará en
dynamic_reprate_enabled=True.default_rep_delay (float): Valor de
rep_delaysi no lo especifica el usuario ydynamic_reprate_enabled=True.n_canales_u: Número de canales en U.
u_canal_lo: Relación U-canal en el dispositivo los.
meas_levels: Niveles de medición admitidos.
qubit_lo_rango: Rangos Qubit lo para cada qubit con forma (min, max) en GHz.
meas_lo_range: Rangos lo de medida para cada qubit con forma (min, max) en GHz.
dt: Paso de tiempo del canal de accionamiento Qubit en nanosegundos.
dtm: Paso de tiempo del canal de accionamiento de medida en nanosegundos.
tiempos_repetición: Tiempos de repetición soportados (tiempo de ejecución del programa) para el backend en μs.
meas_kernels: Núcleos de medida soportados.
discriminadores: Discriminadores admitidos.
hamiltoniano: Un diccionario opcional con campos que caracterizan el hamiltoniano del sistema.
channel_bandwidth (lista): Ancho de banda de todos los canales (qubit, medición y U)
adquisición_latencia (lista): Matriz de dimensión n_qubits x n_registros. Latencia (en unidades de dt) para escribir un resultado de medición del qubit n en la ranura de registro m.
conditional_latency (lista): Matriz de dimensión n_canales [d->u->m] x n_registros. Latencia (en unidades de dt) para realizar una operación condicional en el canal n desde la ranura de registro m
meas_map (lista): Agrupación de mediciones que se multiplexan
nombre_de_muestra (str): Nombre de muestra para el backend
n_registers (int): Número de ranuras de registro disponibles para la retroalimentación (si condicional es True)
register_map (lista): Una matriz de dimensión n_qubits X n_registros que especifica si un qubit puede almacenar una medida en una determinada ranura de registro.
configurable (bool): True si el backend es configurable, si el backend es un simulador
credits_required (bool): True si el backend requiere créditos para ejecutar un trabajo.
online_date (datetime): La fecha en la que el dispositivo se conectó
display_name (str): Campo de nombre alternativo para el backend
descripción (str): Una descripción para el backend
tags (lista): Una lista de etiquetas de cadena para describir el backend
versión: versión de la clase
Backend(Ej: 1, 2)canales: Un diccionario opcional que contiene información de cada canal - su propósito, tipo y qubits operados.
parametric\pulses (lista): Una lista de formas de pulso que son compatibles con el backend. Por ejemplo:
['gaussian', 'constant']tipo_procesador (dict): Tipo de procesador para este backend. Un diccionario de la forma
{"family": <str>, "revision": <str>, segment: <str>}como{"family": "Canary", "revision": "1.0", segment: "A"}.
- familia: Familia de procesadores de este backend.
- revisión: Versión de revisión de este procesador.
- segmento: Segmento al que pertenece este procesador dentro de un chip mayor.
Parámetros
- configuration (QasmBackendConfiguration) – Configuración del backend.
- service (QiskitRuntimeService) – Instancia de QiskitRuntimeService.
- api_client (RuntimeClient) – IBM cliente utilizado para comunicarse con el servidor.
- instance (str | None) – La instancia del servicio que se va a utilizar.
- calibration_id (str | None) – Un identificador de calibración opcional para este backend
Inicializar un backend basado en « BackendV2 »
Parámetros
- proveedor : una referencia opcional al objeto proveedor del que procede el backend
- nombre : un nombre opcional para el backend
- descripción : una descripción opcional del backend
- online_date – Fecha y hora opcionales en las que el servidor se puso en línea
- backend_version : una cadena opcional que indica la versión del backend. Esto difiere del
versionatributo, ya queversionse refiere a la versión de la interfaz abstractaBackenddel objeto, mientras quebackend_versionsirve para gestionar las versiones del propio backend. - campos : argumentos clave-valor que se utilizarán para anular las opciones predeterminadas.
- configuration (QasmBackendConfiguration)
- service (QiskitRuntimeService)
- api_client (RuntimeClient)
- instance (str | None)
- calibration_id (str | None)
Eleva
AttributeError – Si se especifica un campo que no figura entre las opciones del backend
Atributos
calibration_id
El id de calibración utilizado para este backend.
coupling_map
Devuelve el CouplingMap objeto
dt
Devuelve la resolución temporal del sistema de las señales de entrada
Es necesario implementarlo si el backend admite la programación Pulse.
Devuelve
El paso de tiempo de la señal de entrada en segundos. Si el backend no define dt, se devolverá None .
dtm
Devuelve la resolución temporal del sistema de las señales de salida.
Devuelve
El paso de tiempo de la señal de salida en segundos.
id_warning_issued
Valor predeterminado: False
instruction_durations
Devuelve el InstructionDurations objeto.
instructions
Una lista de tuplas de instrucciones en el backend del formulario (instruction, (qubits))
max_circuits
Devuelve el número máximo de circuitos que se pueden ejecutar en un solo trabajo.
Esta propiedad solía devolver el valor max_experiments de la configuración del backend, pero este valor ya no es una representación exacta de los límites de los circuitos del backend. Se añadirán nuevos campos para indicar nuevos límites.
meas_map
Devuelve el grupo de mediciones multiplexadas.
Es necesario implementarlo si el backend admite la programación Pulse.
Devuelve
La agrupación de mediciones multiplexadas
num_qubits
Devuelve el número de qubits que tiene el backend.
operation_names
Una lista de nombres de instrucciones que admite el backend.
operations
Una lista de Instruction instancias que soporta el backend.
options
Devuelve las opciones para el backend
Las opciones de un backend son los parámetros dinámicos que definen cómo se utiliza el backend. Se utilizan para controlar el run() método.
provider
Devuelve el proveedor de backend.
Devuelve
el proveedor responsable del backend.
Tipo de retorno
proveedor
service
Devuelve el service objeto.
Devuelve
Una instancia de QiskitRuntimeService
target
version
Valor predeterminado: 2
name
Nombre del backend.
description
Descripción opcional legible por humanos.
online_date
Fecha de puesta en línea del backend.
backend_version
Versión del backend que se proporciona. No es lo mismo que BackendV2.version, que es la versión de la interfaz abstracta Backend .
Métodos
__call__
check_faulty
check_faulty(circuit)
Comprueba si el circuito de entrada utiliza qubits o bordes defectuosos.
Parámetros
circuit (QuantumCircuit) – Circuito que hay que comprobar.
Eleva
ValueError - Si se encuentra una instrucción que opera sobre un qubit o borde defectuoso.
Tipo de retorno
Ninguna
configuration
configuration()
Devuelve la configuración del backend.
La configuración del backend contiene información fija sobre el backend, como su nombre, número de qubits, puertas base, mapa de acoplamiento, volumen cuántico, etc.
La información sobre la configuración del backend se puede encontrar en la API REST Obtener configuración del backend.
Puede encontrar más detalles sobre las propiedades de configuración del backend aquí QasmBackendConfiguration.
IBM también pueden incluir las siguientes propiedades:
-
supported_features: una lista de cadenas que representan las funciones compatibles, como « “qasm3” » paracompatibilidad con circuitos dinámicos.
-
parallel_compilation: un booleano de si el backend puede o no procesar múltiplestrabajos a la vez. Se paralelizarán partes del cálculo clásico.
Devuelve
La configuración para el backend.
Tipo de retorno
get_translation_stage_plugin
get_translation_stage_plugin()
Devuelve el nombre predeterminado del plugin de la etapa de traducción para los backends de IBM.
Tipo de retorno
str
properties
properties(refresh=False, datetime=None)
Devuelve las propiedades del backend, sujetas a un filtrado opcional.
Estos datos describen las propiedades de los qubits (como T1 y T2 ), las propiedades de las puertas (como la longitud de la puerta y el error) y otras propiedades generales del backend.
La información sobre las propiedades del backend se puede encontrar en la API REST Obtener configuración del backend.
Parámetros
- refresh (bool) – Si
True, vuelva a solicitar al servidor las propiedades del backend. En caso contrario, devuelve una versión en caché. - datetime (python_datetime | None) – Al especificar una fecha y hora, esta función devuelve una instancia de cuya
BackendPropertiesmarca de tiempo sea la más cercana a la fecha y hora especificadas, pero anterior a esta.
Devuelve
Las propiedades del backend o None si las propiedades del backend no están disponibles actualmente.
Eleva
- TypeError - Si un argumento de entrada no es del tipo correcto.
- NotImplementedError - Si se especifica datetime cuando se utiliza cloud runtime.
Tipo de retorno
BackendProperties | Ninguno
qubit_properties
qubit_properties(qubit)
Devuelve QubitProperties para un qubit dado.
Si no hay definidos o el backend no admite la consulta de estos detalles, no es necesario implementar este método.
Parámetros
qubit (int | list[int]) – El qubit para el que se busca el QubitProperties objeto. Puede ser un único número entero que represente 1 qubit, o bien una lista de qubits; en ese caso, se devolverá una lista de QubitProperties objetos en el mismo orden
Devuelve
El objeto QubitProperties para el qubit especificado. Si se proporciona una lista de qubits, se devolverá una lista. Si faltan propiedades para un qubit, esto puede ser None.
Eleva
NotImplementedError - si el backend no permite consultar las propiedades de los qubits
Tipo de retorno
QubitProperties | lista[ QubitProperties ]
refresh
refresh()
Recupera la configuración más reciente del backend y actualiza el objetivo actual del backend.
Tipo de retorno
Ninguna
run
run(*args, **kwargs)
Ejecuta una tarea en el backend.
Eleva
IBMBackendError - El método run() ya no está soportado.
Tipo de retorno
Ninguna
set_options
set_options(**fields)
Establecer los campos de opciones para el backend
Este método se utiliza para actualizar las opciones de un backend. Si necesita cambiar alguna de las opciones antes de ejecutar sólo tiene que pasar el kwarg con el nuevo valor de las opciones.
Parámetros
fields - Los campos para actualizar las opciones
Eleva
AttributeError - Si el campo introducido no forma parte de las opciones
status
status()
Devuelve el estado del backend.
Si la instancia BackendStatus devuelta tiene operational=True pero no status_msg="internal", entonces el backend está aceptando trabajos pero no los está procesando.
Devuelve
El estado del backend.
Eleva
IBMBackendApiProtocolError - Si el estado del backend no puede formatearse correctamente.
Tipo de retorno
target_history
target_history(datetime=None)
A qiskit.transpiler.Target objeto para el backend.
Devuelve
Objetivo con propiedades encontradas en datetime
Parámetros
datetime (python_datetime | None)
Tipo de retorno
Destino