QkTargetEntry
typedef struct QkTargetEntry QkTargetEntryUne 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
QkGatedont les propriétés sont définies par cette entrée cible. Si l'adresseQkGateprend des paramètres (ce qui peut être vérifié avecqk_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 utiliserqk_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.
L'ajout d'une adresse QkGate avec des paramètres réguliers n'est pas pris en charge actuellement.
Paramètres
- operation - Le site
QkGatedont 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 .
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_tsur 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.