Skip to main content
IBM Quantum Platform

QkTargetEntry

typedef struct QkTargetEntry QkTargetEntry

Un mapeo de argumentos qubit y propiedades que representan el mapa de puertas del Objetivo. Esta función se utiliza debido a que no se dispone de mapeados nativos válidos desde C.

He aquí un ejemplo de cómo funciona esta estructura:

#include <qiskit.h>
#include <math.h>

// Create a Target Entry for a CX Gate
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);

// Set a name for the entry
qk_target_entry_set_name(entry, "cx_gate");

// Add mapping between (0,1) and properties duration of 10e-9 and unknown error.
uint32_t qargs[2] = {0, 1};
qk_target_entry_add_property(entry, qargs, 2, 10e-9, NAN);

// Add mapping between Global, and no set duration NAN and error of 0.003)
qk_target_entry_add_property(entry, NULL, 0, NAN, 0.003);

Funciones

qk_target_entry_new

QkTargetEntry *qk_target_entry_new(QkGate operation)

Crea una entrada en QkTarget basada en una instancia de QkGate .

Ejemplo

QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);

Parámetros

  • operation - El QkGate cuyas propiedades define esta entrada de destino. Si QkGate acepta parámetros (lo que puede comprobarse con qk_gate_num_params) se añadirá como una instrucción en el destino que acepta cualquier valor de parámetro. Si la puerta sólo acepta un valor de parámetro fijo, puede utilizar qk_target_entry_new_fixed en su lugar.

Devuelve

Un puntero a la nueva QkTargetEntry.

qk_target_entry_new_measure

QkTargetEntry *qk_target_entry_new_measure(void)

Crea una nueva entrada para añadir una instrucción de medición a QkTarget.

Ejemplo

QkTargetEntry *entry = qk_target_entry_new_measure();
// Add fixed duration and error rates from qubits at index 0 to 4.
for (uint32_t i = 0; i < 5; i++) {
    // Measure is a single qubit instruction
    uint32_t qargs[1] = {i};
    qk_target_entry_add_property(entry, qargs, 1, 1.928e-10, 7.9829e-11);
}

// Add the entry to a target with 5 qubits
QkTarget *measure_target = qk_target_new(5);
qk_target_add_instruction(measure_target, entry);

Devuelve

Un puntero a la nueva QkTargetEntry para una instrucción de medición.

qk_target_entry_new_reset

QkTargetEntry *qk_target_entry_new_reset(void)

Crea una nueva entrada para añadir una instrucción reset a QkTarget.

Ejemplo

QkTargetEntry *entry = qk_target_entry_new_reset();
// Add fixed duration and error rates from qubits at index 0 to 2.
for (uint32_t i = 0; i < 3; i++) {
    // Reset is a single qubit instruction
    uint32_t qargs[1] = {i};
    qk_target_entry_add_property(entry, qargs, 1, 1.2e-11, 5.9e-13);
}

// Add the entry to a target with 3 qubits
QkTarget *reset_target = qk_target_new(3);
qk_target_add_instruction(reset_target, entry);

Devuelve

Un puntero a la nueva QkTargetEntry para una instrucción de reinicio.

qk_target_entry_new_fixed

QkTargetEntry *qk_target_entry_new_fixed(QkGate operation, double *params, const char *name)

Crea una entrada en QkTarget a partir de una instancia de QkGate sin parámetros.

Ejemplo

double crx_params[1] = {3.14};
QkTargetEntry *entry = qk_target_entry_new_fixed(QkGate_CRX, crx_params, "crx_fixed")";

Seguridad

Se espera que el tipo params sea un puntero a una matriz de double cuya longitud coincida con las expectativas de QkGate. Si el array no es suficientemente largo, el comportamiento de esta función es indefinido, ya que leerá fuera de los límites del array. Puede ser un puntero nulo si no hay parámetros para una puerta determinada. Puede consultar qk_gate_num_params para determinar cuántos qubits se necesitan para una puerta determinada.

Se espera que el name puntero sea una cadena C compuesta por caracteres válidos UTF-8 o un puntero nulo.

Nota

Actualmente no es posible añadir un QkGate con parámetros regulares.

Parámetros

  • operation - El QkGate cuyas propiedades define esta entrada de destino.
  • params - Un puntero a los parámetros para los que se calibra la instrucción.
  • nombre : nombre opcional para la instrucción en el destino. Si se proporciona un puntero nulo, la entrada utilizará el nombre predeterminado de la operación.

Devuelve

Un puntero a la nueva QkTargetEntry.

qk_target_entry_num_properties

size_t qk_target_entry_num_properties(const QkTargetEntry *entry)

Recupera el número de propiedades almacenadas en la entrada de destino.

Ejemplo

// Create an entry for an H gate
QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
size_t props_size = qk_target_entry_num_properties(entry);

Seguridad

El comportamiento es indefinido si entry no es un puntero válido y no nulo a un objeto QkTargetEntry .

Parámetros

  • entry - El puntero al objeto de asignación.

Devuelve

El número de propiedades en QkTargetEntry.

qk_target_entry_free

void qk_target_entry_free(QkTargetEntry *entry)

Libera la entrada.

Ejemplo

QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
qk_target_entry_free(entry);

Seguridad

El comportamiento es indefinido si entry no es un puntero válido y no nulo a un objeto QkTargetEntry .

Nota

Se liberará un puntero de entrada cuando se añada a un QkTarget a través de qk_target_add_instruction, esta función sólo está pensada para ser utilizada alternativamente si nunca se añade una entrada a una instancia de QkTarget .

Parámetros

  • entry - El puntero al objeto de asignación que se va a liberar.

qk_target_entry_add_property

QkExitCode qk_target_entry_add_property(QkTargetEntry *entry, uint32_t *qargs, uint32_t num_qubits, double duration, double error)

Añade una instancia de propiedad de instrucción basada en sus qargs asignados.

Ejemplo

QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
uint32_t qargs[2] = {0, 1};
qk_target_entry_add_property(entry, qargs, 2, 0.0, 0.1);

Seguridad

El comportamiento es indefinido si entry no es un puntero válido y no nulo a un objeto QkTargetEntry .

Parámetros

  • entry - El puntero al objeto entry.
  • qargs - Un puntero a la matriz de uint32_t índices qubit para añadir la puerta, puede ser un puntero nulo para comprobar las propiedades globales.
  • num_qubits - La longitud de la matriz qargs.
  • duración - La duración de la instrucción en segundos en el conjunto específico de qubits.
  • error - La tasa de error media de la instrucción en el conjunto específico de qubits.

Devuelve

Un código de salida.

qk_target_entry_set_name

QkExitCode qk_target_entry_set_name(QkTargetEntry *entry, const char *name)

Establece un nombre personalizado para la entrada de destino.

Ejemplo

QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
qk_target_entry_set_name(entry, "cx_gate");

Seguridad

El comportamiento es indefinido si no entry es un puntero válido y distinto de nulo a un QkTargetEntry objeto. Se espera que el name puntero sea una cadena C compuesta por caracteres válidos UTF-8 o un puntero nulo.

Parámetros

  • entry - El puntero al objeto entry.
  • nombre : el nombre que se establecerá para la entrada de destino.

Devuelve

QkExitCode especificando si la operación se ha realizado correctamente.

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