Skip to main content
IBM Quantum Platform

QkTargetEntry

typedef struct QkTargetEntry QkTargetEntry

Une correspondance entre les arguments des qubits et les propriétés représentant la carte des portes de la cible. Cette fonction est utilisée lorsque les correspondances natives valides ne sont pas disponibles à partir de C.

Voici un exemple de fonctionnement de cette structure :

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

Fonctions

qk_target_entry_new

QkTargetEntry *qk_target_entry_new(QkGate operation)

Crée une entrée dans le site QkTarget sur la base d'une instance QkGate .

Exemple

QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);

Paramètres

  • operation - Le site QkGate dont les propriétés sont définies par cette entrée cible. Si l'adresse QkGate prend des paramètres (ce qui peut être vérifié avec qk_gate_num_params), elle sera ajoutée en tant qu'instruction sur la cible qui accepte n'importe quelle valeur de paramètre. Si la porte n'accepte qu'une valeur de paramètre fixe, vous pouvez utiliser qk_target_entry_new_fixed à la place.

Retours

Un pointeur vers le nouveau QkTargetEntry.

qk_target_entry_new_measure

QkTargetEntry *qk_target_entry_new_measure(void)

Crée une nouvelle entrée pour ajouter une instruction de mesure à un site QkTarget.

Exemple

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

Retours

Pointeur vers le nouveau site QkTargetEntry pour une instruction de mesure.

qk_target_entry_new_reset

QkTargetEntry *qk_target_entry_new_reset(void)

Crée une nouvelle entrée pour l'ajout d'une instruction de réinitialisation à un site QkTarget.

Exemple

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

Retours

Pointeur vers le nouveau site QkTargetEntry pour une instruction de réinitialisation.

qk_target_entry_new_fixed

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

Crée une entrée dans le site QkTarget sur la base d'une instance QkGate sans aucun paramètre.

Exemple

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

Sécurité

Le type params est censé être un pointeur sur un tableau de double dont la longueur correspond aux attentes de QkGate. Si le tableau n'est pas suffisamment long, le comportement de cette fonction est indéfini car elle lira en dehors des limites du tableau. Il peut s'agir d'un pointeur nul s'il n'y a pas de paramètres pour une porte donnée. Vous pouvez consulter le site qk_gate_num_params pour déterminer le nombre de qubits requis pour une porte donnée.

Le name pointeur doit être soit une chaîne C composée de caractères valides UTF-8, soit un pointeur nul.

Remarque

L'ajout d'une adresse QkGate avec des paramètres réguliers n'est pas pris en charge actuellement.

Paramètres

  • operation - Le site QkGate dont les propriétés sont définies par cette entrée cible.
  • params - Pointeur vers les paramètres pour lesquels l'instruction est calibrée.
  • nom – Nom facultatif de l'instruction dans la cible. Si un pointeur nul est fourni, l'entrée utilisera le nom par défaut de l'opération.

Retours

Un pointeur vers le nouveau QkTargetEntry.

qk_target_entry_num_properties

size_t qk_target_entry_num_properties(const QkTargetEntry *entry)

Récupère le nombre de propriétés stockées dans l'entrée cible.

Exemple

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

Sécurité

Le comportement est indéfini si entry n'est pas un pointeur valide et non nul vers un objet QkTargetEntry .

Paramètres

  • entry - Pointeur vers l'objet de mappage.

Retours

Le nombre de propriétés sur le site QkTargetEntry.

qk_target_entry_free

void qk_target_entry_free(QkTargetEntry *entry)

Libère l'entrée.

Exemple

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

Sécurité

Le comportement est indéfini si entry n'est pas un pointeur valide et non nul vers un objet QkTargetEntry .

Remarque

Un pointeur d'entrée sera libéré lorsqu'il est ajouté à une instance QkTarget via qk_target_add_instruction, cette fonction est uniquement destinée à être utilisée comme alternative si une entrée n'est jamais ajoutée à une instance QkTarget .

Paramètres

  • entry - Le pointeur sur l'objet de mappage à libérer.

qk_target_entry_add_property

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

Ajoute une instance de propriété d'instruction en fonction des qargs qui lui sont attribués.

Exemple

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

Sécurité

Le comportement est indéfini si entry n'est pas un pointeur valide et non nul vers un objet QkTargetEntry .

Paramètres

  • entry - Le pointeur sur l'objet d'entrée.
  • qargs - Un pointeur sur le tableau d'indices de qubits uint32_t sur lequel ajouter la porte, peut être un pointeur nul pour vérifier les propriétés globales.
  • num_qubits - La longueur du tableau qargs.
  • duration - Durée de l'instruction en secondes sur l'ensemble spécifique de qubits.
  • error - Taux d'erreur moyen de l'instruction sur l'ensemble spécifique de qubits.

Retours

Un code de sortie.

qk_target_entry_set_name

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

Définit un nom personnalisé pour l'entrée cible.

Exemple

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

Sécurité

Le comportement est indéfini si entry n'est pas un pointeur valide et non nul vers un QkTargetEntry objet. Le name pointeur doit être soit une chaîne C composée de caractères valides UTF-8, soit un pointeur nul.

Paramètres

  • entry - Le pointeur sur l'objet d'entrée.
  • nom – Nom à attribuer à l'entrée cible.

Retours

QkExitCode indiquant si l'opération a réussi.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.