Skip to main content
IBM Quantum Platform

QkTargetEntry

typedef struct QkTargetEntry QkTargetEntry

Una mappatura degli argomenti dei qubit e delle proprietà che rappresentano la mappa dei gate del target. Questa funzione viene utilizzata per non avere a disposizione mappature native valide da C.

Ecco un esempio di come funziona questa struttura:

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

Funzioni

qk_target_entry_new

QkTargetEntry *qk_target_entry_new(QkGate operation)

Crea una voce in QkTarget basata su un'istanza di QkGate .

Esempio

QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);

Parametri

  • operation - Il sito QkGate di cui questa voce di destinazione definisce le proprietà. Se QkGate accetta dei parametri (che possono essere controllati con qk_gate_num_params) verrà aggiunto come istruzione sulla destinazione che accetta qualsiasi valore di parametro. Se il gate accetta solo un valore di parametro fisso, si può utilizzare invece qk_target_entry_new_fixed .

Risultati

Un puntatore al nuovo QkTargetEntry.

qk_target_entry_new_measure

QkTargetEntry *qk_target_entry_new_measure(void)

Crea una nuova voce per aggiungere un'istruzione di misura a un sito QkTarget.

Esempio

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

Risultati

Puntatore al nuovo QkTargetEntry per un'istruzione di misura.

qk_target_entry_new_reset

QkTargetEntry *qk_target_entry_new_reset(void)

Crea una nuova voce per aggiungere un'istruzione di reset a QkTarget.

Esempio

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

Risultati

Un puntatore al nuovo QkTargetEntry per un'istruzione di reset.

qk_target_entry_new_fixed

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

Crea una voce in QkTarget basata su un'istanza di QkGate senza parametri.

Esempio

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

Sicurezza

Il tipo params dovrebbe essere un puntatore a un array di double la cui lunghezza corrisponde alle aspettative di QkGate. Se l'array non è sufficientemente lungo, il comportamento di questa funzione non è definito, poiché la lettura avverrà al di fuori dei limiti dell'array. Può essere un puntatore nullo se non ci sono parametri per un determinato gate. È possibile controllare qk_gate_num_params per determinare quanti qubit sono necessari per un determinato gate.

Il name puntatore deve essere una stringa C composta da caratteri validi UTF-8 o un puntatore nullo.

Nota

L'aggiunta di un QkGate con parametri regolari non è attualmente supportata.

Parametri

  • operation - Il sito QkGate di cui questa voce di destinazione definisce le proprietà.
  • params - Un puntatore ai parametri per cui l'istruzione è calibrata.
  • nome – Un nome facoltativo per l'istruzione nella destinazione. Se viene fornito un puntatore nullo, la voce utilizzerà il nome predefinito dell'operazione.

Risultati

Un puntatore al nuovo QkTargetEntry.

qk_target_entry_num_properties

size_t qk_target_entry_num_properties(const QkTargetEntry *entry)

Recupera il numero di proprietà memorizzate nella voce di destinazione.

Esempio

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

Sicurezza

Il comportamento è indefinito se entry non è un puntatore valido e non nullo a un oggetto QkTargetEntry .

Parametri

  • entry - Il puntatore all'oggetto di mappatura.

Risultati

Il numero di proprietà nel sito QkTargetEntry.

qk_target_entry_free

void qk_target_entry_free(QkTargetEntry *entry)

Libera l'ingresso.

Esempio

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

Sicurezza

Il comportamento è indefinito se entry non è un puntatore valido e non nullo a un oggetto QkTargetEntry .

Nota

Il puntatore a una voce viene liberato quando viene aggiunto a un'istanza di QkTarget tramite qk_target_add_instruction, questa funzione deve essere usata solo in alternativa se una voce non viene mai aggiunta a un'istanza di QkTarget .

Parametri

  • entry - Il puntatore all'oggetto di mappatura da liberare.

qk_target_entry_add_property

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

Aggiunge un'istanza di proprietà di un'istruzione in base ai qarg assegnati.

Esempio

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

Sicurezza

Il comportamento è indefinito se entry non è un puntatore valido e non nullo a un oggetto QkTargetEntry .

Parametri

  • entry - Il puntatore all'oggetto entry.
  • qargs - Un puntatore all'array di indici di qubit uint32_t su cui aggiungere il gate; può essere un puntatore nullo per controllare le proprietà globali.
  • num_qubits - La lunghezza dell'array qargs.
  • durata - La durata dell'istruzione in secondi sul set specifico di qubit.
  • error - Il tasso di errore medio dell'istruzione sullo specifico set di qubit.

Risultati

Un codice di uscita.

qk_target_entry_set_name

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

Imposta un nome personalizzato per la voce di destinazione.

Esempio

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

Sicurezza

Il comportamento è indefinito se non entry è un puntatore valido e diverso da null a un QkTargetEntry oggetto. Il name puntatore deve essere una stringa C composta da caratteri validi UTF-8 o un puntatore nullo.

Parametri

  • entry - Il puntatore all'oggetto entry.
  • nome – Il nome da impostare per la voce di destinazione.

Risultati

QkExitCode specificando se l'operazione è stata eseguita con successo.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.