Skip to main content
IBM Quantum Platform

QkTargetEntry

typedef struct QkTargetEntry QkTargetEntry

Eine Zuordnung von Qubit-Argumenten und Eigenschaften, die eine Gate-Map des Ziels darstellen. Diese Funktion wird verwendet, wenn keine gültigen nativen Mappings aus C verfügbar sind.

Hier ein Beispiel dafür, wie diese Struktur funktioniert:

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

Funktionen

qk_target_entry_new

QkTargetEntry *qk_target_entry_new(QkGate operation)

Erstellt einen Eintrag in QkTarget basierend auf einer QkGate Instanz.

Beispiel

QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);

Parameter

  • operation - Die QkGate , deren Eigenschaften dieser Zieleintrag definiert. Wenn QkGate Parameter akzeptiert (was mit qk_gate_num_params überprüft werden kann), wird es als eine Anweisung auf dem Ziel hinzugefügt, die jeden Parameterwert akzeptiert. Wenn das Gate nur einen festen Parameterwert akzeptiert, können Sie stattdessen qk_target_entry_new_fixed verwenden.

Rückgabe

Ein Verweis auf die neue QkTargetEntry.

qk_target_entry_new_measure

QkTargetEntry *qk_target_entry_new_measure(void)

Erzeugt einen neuen Eintrag für das Hinzufügen einer Messanweisung zu einer QkTarget.

Beispiel

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

Rückgabe

Ein Zeiger auf die neue QkTargetEntry für eine Messanweisung.

qk_target_entry_new_reset

QkTargetEntry *qk_target_entry_new_reset(void)

Erzeugt einen neuen Eintrag für das Hinzufügen einer Reset-Anweisung zu einer QkTarget.

Beispiel

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

Rückgabe

Ein Zeiger auf die neue QkTargetEntry für eine Reset-Anweisung.

qk_target_entry_new_fixed

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

Erstellt einen Eintrag in der QkTarget auf der Grundlage einer QkGate -Instanz ohne Parameter.

Beispiel

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

Sicherheit

Es wird erwartet, dass der Typ params ein Zeiger auf ein Array von double ist, dessen Länge den Erwartungen von QkGate entspricht. Wenn das Array nicht lang genug ist, ist das Verhalten dieser Funktion undefiniert, da sie außerhalb der Grenzen des Arrays liest. Es kann ein Null-Zeiger sein, wenn es keine Parameter für ein bestimmtes Tor gibt. Sie können unter qk_gate_num_params nachsehen, wie viele Qubits für ein bestimmtes Gatter erforderlich sind.

Der name Zeiger muss entweder ein C-String sein, der aus gültigen Zeichen ( UTF-8 ) besteht, oder ein Nullzeiger.

Anmerkung

Das Hinzufügen einer QkGate mit regulären Parametern wird derzeit nicht unterstützt.

Parameter

  • operation - Die QkGate , deren Eigenschaften dieser Zieleintrag definiert.
  • params - Ein Zeiger auf die Parameter, für die die Anweisung kalibriert wird.
  • name – Ein optionaler Name für die Anweisung im Ziel. Wenn ein Null-Zeiger angegeben wird, verwendet der Eintrag den Standardnamen der Operation.

Rückgabe

Ein Verweis auf die neue QkTargetEntry.

qk_target_entry_num_properties

size_t qk_target_entry_num_properties(const QkTargetEntry *entry)

Ruft die Anzahl der im Zieleintrag gespeicherten Eigenschaften ab.

Beispiel

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

Sicherheit

Das Verhalten ist undefiniert, wenn entry kein gültiger, nicht-null Zeiger auf ein QkTargetEntry Objekt ist.

Parameter

  • entry - Der Zeiger auf das Mapping-Objekt.

Rückgabe

Die Anzahl der Immobilien auf QkTargetEntry.

qk_target_entry_free

void qk_target_entry_free(QkTargetEntry *entry)

Gibt den Eintrag frei.

Beispiel

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

Sicherheit

Das Verhalten ist undefiniert, wenn entry kein gültiger, nicht-null Zeiger auf ein QkTargetEntry Objekt ist.

Anmerkung

Ein Eintragszeiger wird freigegeben, wenn er über qk_target_add_instruction zu einer QkTarget -Instanz hinzugefügt wird. Diese Funktion ist nur als Alternative gedacht, wenn nie ein Eintrag zu einer QkTarget -Instanz hinzugefügt wird.

Parameter

  • entry - Der Zeiger auf das freizugebende Mapping-Objekt.

qk_target_entry_add_property

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

Fügt eine Instruktionseigenschaftsinstanz auf der Grundlage der ihr zugewiesenen qargs hinzu.

Beispiel

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

Sicherheit

Das Verhalten ist undefiniert, wenn entry kein gültiger, nicht-null Zeiger auf ein QkTargetEntry Objekt ist.

Parameter

  • entry - Der Zeiger auf das Eintragsobjekt.
  • qargs - Ein Zeiger auf das Array von uint32_t Qubit-Indizes, um das Tor hinzuzufügen, kann ein Null-Zeiger sein, um auf globale Eigenschaften zu prüfen.
  • num_qubits - Die Länge des qargs-Arrays.
  • duration - Die Dauer des Befehls in Sekunden für den spezifischen Satz von Qubits.
  • error - Die durchschnittliche Fehlerrate der Anweisung auf dem spezifischen Satz von Qubits.

Rückgabe

Ein Exit-Code.

qk_target_entry_set_name

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

Legt einen benutzerdefinierten Namen für den Zieleintrag fest.

Beispiel

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

Sicherheit

Das Verhalten ist undefiniert, wenn kein gültiger, nicht-null entry Zeiger auf ein QkTargetEntry Objekt ist. Der name Zeiger muss entweder ein C-String sein, der aus gültigen Zeichen ( UTF-8 ) besteht, oder ein Nullzeiger.

Parameter

  • entry - Der Zeiger auf das Eintragsobjekt.
  • name – Der Name, der für den Zieleintrag festgelegt werden soll.

Rückgabe

QkExitCode Angabe, ob der Vorgang erfolgreich war.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.