Skip to main content
IBM Quantum Platform

QkTargetEntry

typedef struct QkTargetEntry QkTargetEntry

Um mapeamento de argumentos de qubit e propriedades que representam o mapa de porta do Target. Esse recurso é usado porque não há mapeamentos nativos válidos disponíveis em C.

Veja um exemplo de como essa estrutura funciona:

#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);

Funções

qk_target_entry_new

QkTargetEntry *qk_target_entry_new(QkGate operation)

Cria uma entrada no site QkTarget com base em uma instância do site QkGate .

Exemplo

QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);

Parâmetros

  • operação - O site QkGate cujas propriedades essa entrada de destino define. Se o QkGate receber parâmetros (que podem ser verificados com qk_gate_num_params), ele será adicionado como uma instrução no destino que aceita qualquer valor de parâmetro. Se a porta aceitar apenas um valor de parâmetro fixo, você poderá usar qk_target_entry_new_fixed em vez disso.

Retorna

Um ponteiro para o novo QkTargetEntry.

qk_target_entry_new_measure

QkTargetEntry *qk_target_entry_new_measure(void)

Cria uma nova entrada para adicionar uma instrução de medição a um site QkTarget.

Exemplo

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);

Retorna

Um ponteiro para o novo QkTargetEntry para uma instrução de medição.

qk_target_entry_new_reset

QkTargetEntry *qk_target_entry_new_reset(void)

Cria uma nova entrada para adicionar uma instrução de reinicialização a um site QkTarget.

Exemplo

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);

Retorna

Um ponteiro para o novo QkTargetEntry para uma instrução de redefinição.

qk_target_entry_new_fixed

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

Cria uma entrada no site QkTarget com base em uma instância QkGate sem parâmetros.

Exemplo

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

Segurança

Espera-se que o tipo params seja um ponteiro para uma matriz de double em que o comprimento corresponda às expectativas do QkGate. Se a matriz for insuficientemente longa, o comportamento dessa função é indefinido, pois ela lerá fora dos limites da matriz. Pode ser um ponteiro nulo se não houver parâmetros para um determinado portão. Você pode consultar qk_gate_num_params para determinar quantos qubits são necessários para uma determinada porta.

Espera-se que name o ponteiro seja uma string C composta por caracteres válidos UTF-8 ou um ponteiro nulo.

Nota

No momento, não há suporte para a adição de um QkGate com parâmetros regulares.

Parâmetros

  • operação - O site QkGate cujas propriedades essa entrada de destino define.
  • params - Um ponteiro para os parâmetros para os quais a instrução é calibrada.
  • nome – Um nome opcional para a instrução no destino. Se um ponteiro nulo for fornecido, a entrada utilizará o nome padrão da operação.

Retorna

Um ponteiro para o novo QkTargetEntry.

qk_target_entry_num_properties

size_t qk_target_entry_num_properties(const QkTargetEntry *entry)

Recupera o número de propriedades armazenadas na entrada de destino.

Exemplo

// 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);

Segurança

O comportamento é indefinido se entry não for um ponteiro válido e não nulo para um objeto QkTargetEntry .

Parâmetros

  • entrada - O ponteiro para o objeto de mapeamento.

Retorna

O número de propriedades no site QkTargetEntry.

qk_target_entry_free

void qk_target_entry_free(QkTargetEntry *entry)

Libera a entrada.

Exemplo

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

Segurança

O comportamento é indefinido se entry não for um ponteiro válido e não nulo para um objeto QkTargetEntry .

Nota

Um ponteiro de entrada será liberado quando adicionado a um QkTarget por meio de qk_target_add_instruction. Essa função deve ser usada apenas como alternativa se uma entrada nunca for adicionada a uma instância de QkTarget .

Parâmetros

  • entry - O ponteiro para o objeto de mapeamento a ser liberado.

qk_target_entry_add_property

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

Adiciona uma instância de propriedade de instrução com base em seus qargs atribuídos.

Exemplo

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);

Segurança

O comportamento é indefinido se entry não for um ponteiro válido e não nulo para um objeto QkTargetEntry .

Parâmetros

  • entrada - O ponteiro para o objeto de entrada.
  • qargs - Um ponteiro para a matriz de índices de uint32_t qubit para adicionar o portão, pode ser um ponteiro nulo para verificar as propriedades globais.
  • num_qubits - O comprimento do array qargs.
  • duração - A duração da instrução em segundos no conjunto específico de qubits.
  • error - A taxa de erro média da instrução no conjunto específico de qubits.

Retorna

Um código de saída.

qk_target_entry_set_name

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

Define um nome personalizado para a entrada de destino.

Exemplo

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

Segurança

O comportamento é indefinido se não entry for um ponteiro válido e diferente de nulo para um QkTargetEntry objeto. Espera-se que name o ponteiro seja uma string C composta por caracteres válidos UTF-8 ou um ponteiro nulo.

Parâmetros

  • entrada - O ponteiro para o objeto de entrada.
  • nome – O nome a ser definido para a entrada de destino.

Retorna

QkExitCode especificando se a operação foi bem-sucedida.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.