Skip to main content
IBM Quantum Platform

BackendV2

class qiskit.providers.BackendV2(provider=None, name=None, description=None, online_date=None, backend_version=None, **fields)

GitHub

Bases: Backend, ABC

Clase abstracta para backends

Esta clase abstracta se utilizará para todos los objetos Backend creados por un proveedor. Esta versión difiere de las anteriores clases abstractas Backend en que el atributo de configuración ya no existe. En su lugar, se añaden atributos que exponen propiedades inmutables equivalentes requeridas del dispositivo backend. Por ejemplo, ahora se puede acceder a backend.configuration().n_qubits desde backend.num_qubits .

El atributo options del backend se utiliza para contener las opciones dinámicas configurables por el usuario del backend. Debería utilizarse más para las opciones de ejecución que configuran cómo se utiliza el backend. Por ejemplo, algo como un campo shots para un backend que ejecuta experimentos que contendría un int para el número de disparos a ejecutar.

Un objeto de backend puede contener, opcionalmente, métodos denominados get_translation_stage_plugin y get_scheduling_stage_plugin. Si estos métodos están presentes en un objeto de backend y dicho objeto se utiliza para transpile() o, generate_preset_pass_manager() el proceso de transpilación utilizará por defecto el resultado de dichos métodos como etapa de programación y como etapa de compilación de traducción. Esto permite que un backend con requisitos de compilación específicos pueda especificar un complemento de etapa para dichas etapas, con el fin de permitir una transformación personalizada del circuito y garantizar así que se pueda ejecutar en el backend. Estos ganchos están habilitados de forma predeterminada y solo deben utilizarse para activar pasos de compilación adicionales si son necesarios para garantizar que un circuito sea ejecutable en el backend o alcance el nivel de rendimiento esperado. A estos métodos no se les pasan argumentos de entrada y se espera que devuelvan un valor str que represente el nombre del método, el cual debe ser un complemento de etapa (véase: qiskit.transpiler.preset_passmanagers.plugin para obtener más detalles sobre los complementos). El caso de uso típico previsto es que un proveedor de backend implemente un complemento de etapa para translation o scheduling que contenga las etapas de compilación personalizadas y, a continuación, que los métodos de gancho del objeto de backend devuelvan el nombre del complemento, de modo que lo transpile() utilice de forma predeterminada al seleccionar dicho backend como destino.

Las subclases de este método deben anular el método público run() y el método interno _default_options():

_default_options

abstractmethod classmethod _default_options()

GitHub

Devolver las opciones por defecto

Este método devolverá un objeto qiskit.providers.Options objeto subclase que se utilizará para las opciones por defecto. Estos deberían ser los parámetros por defecto a utilizar para las opciones del backend.

Devuelve

Un objeto options con

valores por defecto establecidos

Tipo de retorno

qiskit.providers.Options

Inicializar un backend basado en BackendV2

Parámetros

  • provider - Una referencia hacia atrás opcional al objeto proveedor del que procede el backend
  • name (str | None) – Un nombre opcional para el backend
  • description (str | None) – Una descripción opcional del backend
  • online_date (datetime | None) – Una fecha y hora opcionales en las que se puso en marcha el servidor
  • backend_version (str | None) – Una cadena de versión del backend opcional. Esto difiere del version atributo, ya que version se refiere a la versión de la interfaz abstracta Backend del objeto, mientras que backend_version sirve para gestionar las versiones del propio backend.
  • fields - kwargs para los valores a utilizar para anular las opciones por defecto.

Eleva

AttributeError - Si se especifica un campo que está fuera de las opciones del backend


Atributos

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.

Eleva

NotImplementedError - si el backend no permite consultar el paso de tiempo de la señal de salida

instruction_durations

Devuelve el InstructionDurations objeto.

instructions

Una lista de tuplas de instrucciones en el backend del formulario (instruction, (qubits))

max_circuits

El número máximo de circuitos que se pueden ejecutar en un solo trabajo.

Si no hay límite, devolverá Ninguno

meas_map

Devuelve la agrupación de medidas que están multiplexadas

Es necesario implementarlo si el backend admite la programación Pulse.

Devuelve

La agrupación de mediciones multiplexadas

Eleva

NotImplementedError - si el backend no admite la consulta de la asignación de mediciones

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

target

A qiskit.transpiler.Target objeto para el backend.

Tipo de retorno

Destino

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.versionque es la versión de la interfaz Backend interfaz abstracta.


Métodos

qubit_properties

qubit_properties(qubit)

GitHub

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 objeto 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 ]

run

abstractmethod run(run_input, **options)

GitHub

Ejecutar en el backend.

Este método devuelve un Job objeto que ejecuta circuitos. Dependiendo del backend esto puede ser una llamada async o sync. Queda a discreción del proveedor decidir si la ejecución debe bloquearse hasta que finalice o no: la clase Job puede manejar cualquiera de las dos situaciones.

Parámetros

  • run_input (QuantumCircuit orlist) – Un individuo o una lista de QuantumCircuit objetos para ejecutar en el backend.
  • options - Cualquier opción kwarg a pasar al backend para ejecutar la configuración. Si una clave también está presente en el atributo/objeto de opciones, se espera que se utilice el valor especificado en lugar del establecido en el objeto de opciones.

Devuelve

El objeto de trabajo para la ejecución

Tipo de retorno

job

set_options

set_options(**fields)

GitHub

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

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.