Skip to main content
IBM Quantum Platform

QkTranspiler

Die qk_transpile() Funktion macht den Qiskit-Transpiler (qiskit.transpiler) für C verfügbar. Die Grundfunktionalität basiert auf demselben Code wie die Version für den „ Python “-Bereich, doch der Transpiler, der für C verfügbar ist, weist mehr Einschränkungen auf als der für „ Python “ verfügbare. Der Transpiler geht davon aus, dass eine Schaltung ausschließlich unter Verwendung der C-API erstellt wurde, und ist ausschließlich für den Einsatz mit einer eigenständigen C-API vorgesehen. In einem Anwendungsfall, in dem „ Python “ und „/C“ gemischt verwendet werden, funktioniert dies möglicherweise nicht ordnungsgemäß. Wenn Sie C- und „ Python “-Schaltungen kombinieren, sollten Sie für diese Schaltungen die Funktionen generate_preset_pass_manager() transpile() oder aufrufen.


Datentypen

QkTranspileResult

struct QkTranspileResult

Das Container-Ergebnisobjekt von qk_transpile

Wenn der Transpiler eine Quantenschaltung für ein bestimmtes Ziel erfolgreich kompiliert hat, gibt er die transpilierte Schaltung und das Layout zurück. Die Funktion qk_transpile schreibt Zeiger auf die Felder in dieser Struktur, wenn sie erfolgreich ausgeführt wird. Sie können diese Struktur mit Null-Zeigern initialisieren oder sie ungesetzt lassen, da die Werte von qk_transpile nie gelesen, sondern nur beschrieben werden. Nach dem Aufruf von qk_transpile sind Sie für den Aufruf von qk_circuit_free und qk_transpile_layout_free für die Mitglieder dieser Struktur verantwortlich.

QkCircuit *Schaltkreis

Die zusammengestellte Schaltung.

QkTranspileLayout *Layout

Metadaten über die anfänglichen und endgültigen virtuellen und physischen Layouts.

QkTranspileOptions

struct QkTranspileOptions

Die Optionen für die Ausführung des Transpilers

uint8_t Optimierungsstufe

Die Optimierungsstufe, mit der der Transpiler ausgeführt werden soll. Gültige Werte sind 0, 1, 2 oder 3.

int64_t Samen

Das Saatgut für den Transpiler. Wird dieser Wert auf eine negative Zahl gesetzt, bedeutet dies, dass kein Seed gesetzt wird und die im Transpiler verwendeten RNGs aus der Systementropie geimpft werden.

doppelte Annäherung_Grad

Der Näherungsgrad wird über einen heuristischen Regler eingestellt, wobei „ 1.0 “ keine Näherung (bis auf die numerische Toleranz) und „ 0.0 “ die maximale Näherung bedeutet. Ein NAN Wert gibt an, dass für eine Operation im Ziel eine Annäherung bis zur angegebenen Fehlerrate zulässig ist.

QkTranspilerStageState

struct QkTranspilerStageState

Ein Container, in dem einzelne Attribute gesammelt werden, die von den Transpiler-Stufen gemeinsam genutzt werden. Bei korrekter Transpilation schreibt jede einzelne Stufe bestimmte Attribute in diesen Container, die von den nachfolgenden Stufen benötigt werden. Wenn der Container nicht initialisiert ist, initialisiert jede Stufe bei Bedarf ein neues Objekt.

qk_transpile_state_new

void qk_transpile_state_new(QkTranspilerStageState **state)

Erstelle einen Zeiger auf ein leeres QkTranspilerStageState Objekt

Sicherheit

Das Verhalten ist nicht definiert, wenn kein gültiger, state zugewiesener Zeiger ist.

Parameter

  • state – ein Zeiger auf den zugewiesenen Speicherbereich, in dem der Zeiger gespeichert werden soll.

qk_transpile_state_free

void qk_transpile_state_free(QkTranspilerStageState *state)

Ein QkTranspilerStageState Objekt freigeben

Sicherheit

Das Verhalten ist nicht definiert, wenn kein gültiger, state nicht-null-Zeiger auf ein ist QkTranspilerStageState.

Parameter

  • state – ein Zeiger auf den freizugebenden Zustand

qk_transpile_state_layout

QkTranspileLayout *qk_transpile_state_layout(QkTranspilerStageState *state)

Ruft ein QkTranspileLayout Objekt von einem QkTranspilerStageState Objekt ab.

Dieser Zeiger gehört dem state Objekt und sollte nicht mit freigegeben qk_transpile_layout_free werden. Geben Sie stattdessen das ursprüngliche state Objekt mit frei qk_transpile_state_free.

Sicherheit

Das Verhalten ist nicht definiert, wenn kein gültiger, state nicht-null-Zeiger auf ein ist QkTranspilerStageState.

Parameter

  • state – ein Zeiger auf den Zustand, aus dem das Layout abgerufen werden soll.

Rückgabe

ein Zeiger auf ein QkTranspileLayout Objekt, das sich im Besitz des Staates befindet.

qk_transpile_state_layout_set

void qk_transpile_state_layout_set(QkTranspilerStageState *state, QkTranspileLayout *layout)

Legt ein QkTranspileLayout Objekt als Layout für ein QkTranspilerStageState Objekt fest.

Der Aufruf dieser Methode verbraucht das QkTranspileLayout Objekt, was bedeutet, dass der Benutzer den Aufruf nicht mehr durchführen qk_transpile_layout_free muss. Der Benutzer sollte den dafür zugewiesenen Speicherplatz dennoch mit free… freigeben.

Sicherheit

Das Verhalten ist nicht definiert, wenn kein gültiger, state nicht-null-Zeiger auf ein ist QkTranspilerStageState. Das Verhalten ist nicht definiert, wenn kein gültiger state Zeiger auf ein ist QkTranspileLayout.

Parameter

  • state – ein Zeiger auf den Zustand, für den das Layout festgelegt werden soll.
  • layout – ein Zeiger auf das zu verwendende Layout. Möglicherweise, NULL um das Layout aufzuheben.

Funktionen

qk_transpiler_default_options

QkTranspileOptions qk_transpiler_default_options(void)

Standardeinstellungen für Transpiler-Optionen generieren

Diese Funktion erzeugt eine QkTranspileOptions mit den Standardeinstellungen. Derzeit ist dies optimization_level 2, kein Seed und keine Approximation.

Rückgabe

Ein QkTranspileOptions Objekt mit Standardeinstellungen.

qk_transpile_stage_init

QkExitCode qk_transpile_stage_init(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState **state, char **error)

Führen Sie die voreingestellte Initialisierungsphase des Transpilers auf einer Schaltung aus

Der Qiskit-Transpiler ist ein Quanten-Schaltkreis-Compiler, der einen gegebenen Eingangs-Schaltkreis so umschreibt, dass er den Einschränkungen einer QPU entspricht, und den Schaltkreis für die Ausführung optimiert. Diese Funktion führt die erste Stufe des Transpilers aus, init, der Optimierungen abstrakter Schaltkreise durchführt und Multi-Qubit-Operationen auf Ein- und Zwei-Qubit-Operationen reduziert. Weitere Informationen finden Sie unter Initialisierungsphase.

Diese Funktion sollte nur mit Schaltungen verwendet werden, die mit der C-API von Qiskit erstellt wurden. Es trifft Annahmen über die Schaltung, indem es nur über C bereitgestellte Funktionen verwendet. Wenn Sie sich in einer gemischten Python und C-Umgebung befinden, ist es in der Regel besser, den Transpiler über Python aufzurufen.

Diese Funktion ist intern multithreading-fähig und startet einen Thread-Pool mit Threads, die standardmäßig der vom Betriebssystem gemeldeten Anzahl von CPUs entsprechen. Dazu gehören logische Kerne auf CPUs mit gleichzeitigem Multithreading. Sie können die Anzahl der Threads mit der Umgebungsvariablen RAYON_NUM_THREADS einstellen. Zum Beispiel würde die Einstellung RAYON_NUM_THREADS=4 den Thread-Pool auf 4 Threads begrenzen.

Sicherheit

Das Verhalten ist nicht definiert, wenn dag, target, oder keine gültigen, statenicht-null-Zeiger auf einen QkDag, QkTarget, bzw. einen QkTranspileLayout Zeiger sind. options muss ein gültiger Zeiger auf a QkTranspileOptions oder sein NULL. error muss ein gültiger Zeiger auf einen char Zeiger oder sein NULL. Der Wert des inneren Zeigers für state wird durch diese Funktion überschrieben. Wenn der Wert, auf den verwiesen wird, freigegeben werden muss, muss dies außerhalb dieser Funktion erfolgen, da er von dieser Funktion nicht freigegeben wird.

Parameter

  • dag – Ein Zeiger auf den Schaltkreis, auf dem der Transpiler ausgeführt werden soll.
  • target - Ein Zeiger auf das Ziel, für das die Schaltung kompiliert werden soll.
  • options - Ein Zeiger auf ein Optionsobjekt, das Benutzeroptionen definiert. Wenn dies ein Null-Zeiger ist, werden die Standardwerte verwendet. Unter qk_transpile_default_options finden Sie weitere Einzelheiten zu den Standardwerten.
  • Zustand – Ein Zeiger auf einen Zeiger auf ein QkTranspilerStageState Objekt. Bei erfolgreicher Ausführung (Rückgabewert 0) wird ein Zeiger auf das vom Transpiler erstellte Statusobjekt in diesen Zeiger geschrieben.
  • Fehler – Ein Zeiger auf einen Zeiger mit einer null-terminierten Zeichenkette mit einer Fehlerbeschreibung. Wenn der Transpiler fehlschlägt, wird ein Zeiger auf die Zeichenfolge mit der Fehlerbeschreibung in diesen Zeiger geschrieben. Dieser Zeiger muss mit freigegeben qk_str_free werden. Dies kann ein Nullzeiger sein, in diesem Fall wird der Fehler nicht ausgegeben.

Rückgabe

Der Rückgabecode für den Transpiler, QkExitCode_Success bedeutet Erfolg und alle anderen Werte bedeuten einen Fehler.

qk_transpile_stage_routing

QkExitCode qk_transpile_stage_routing(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState *state, char **error)

Führen Sie die voreingestellte Routing-Phase des Transpilers auf einer Schaltung aus

Der Qiskit-Transpiler ist ein Quanten-Schaltkreis-Compiler, der einen gegebenen Eingangs-Schaltkreis so umschreibt, dass er den Einschränkungen einer QPU entspricht, und den Schaltkreis für die Ausführung optimiert. Diese Funktion führt die dritte Stufe des voreingestellten Pass-Managers aus, das Routing, das alle Anweisungen im Schaltkreis in solche übersetzt, die vom Ziel unterstützt werden. Weitere Informationen finden Sie unter „Routing-Phase “.

Diese Funktion sollte nur mit Schaltungen verwendet werden, die mit der C-API von Qiskit erstellt wurden. Es trifft Annahmen über die Schaltung, indem es nur über C bereitgestellte Funktionen verwendet. Wenn Sie sich in einer gemischten Python und C-Umgebung befinden, ist es in der Regel besser, den Transpiler über Python aufzurufen.

Diese Funktion ist intern multithreading-fähig und startet einen Thread-Pool mit Threads, die standardmäßig der vom Betriebssystem gemeldeten Anzahl von CPUs entsprechen. Dazu gehören logische Kerne auf CPUs mit gleichzeitigem Multithreading. Sie können die Anzahl der Threads mit der Umgebungsvariablen RAYON_NUM_THREADS einstellen. Zum Beispiel würde die Einstellung RAYON_NUM_THREADS=4 den Thread-Pool auf 4 Threads begrenzen.

Sicherheit

Das Verhalten ist undefiniert, wenn dag, target oder keine gültigen, von Null verschiedenen layoutZeiger auf einen QkDag, bzw. einen QkTranspileLayout QkTargetZeiger sind. options muss ein gültiger Zeiger auf a QkTranspileOptions oder sein NULL. error muss ein gültiger Zeiger auf einen char Zeiger oder sein NULL.

Parameter

  • dag – Ein Zeiger auf den Schaltkreis, auf dem der Transpiler ausgeführt werden soll.
  • target - Ein Zeiger auf das Ziel, für das die Schaltung kompiliert werden soll.
  • options - Ein Zeiger auf ein Optionsobjekt, das Benutzeroptionen definiert. Wenn dies ein Null-Zeiger ist, werden die Standardwerte verwendet. Unter qk_transpile_default_options finden Sie weitere Einzelheiten zu den Standardwerten.
  • state – Ein Zeiger auf einen Zeiger auf ein QkTranspilerStageState Objekt, das das Layout enthält. In der Regel müssen Sie vor dieser Funktion qk_transpile_stage_layout die Funktion ausführen, wodurch ein QkTranspilerStageState Objekt mit dem voreingestellten Layout bereitgestellt wird. Du möchtest den Rückgabewert dieser Funktion als Eingabe für diese Funktion verwenden. Wenn Sie kein Layout-Objekt haben (z. B. weil Sie einen eigenen Layout-Durchlauf durchgeführt haben). Sie können das Programm ausführen, um ein qk_transpile_layout_generate_from_mapping einfaches Layout zu generieren (bei dem das virtuelle Qubit 0 im Schaltkreis dem physikalischen Qubit 0 im Ziel zugeordnet wird, 1 -> 1, 2 -> 2 usw.), das dem aktuellen Zustand des DAG entspricht. Auf diese Weise können Sie ein Layout-Objekt für die Routing-Phase erstellen, wenn Sie Ihr eigenes Layout generieren.
  • Fehler – Ein Zeiger auf einen Zeiger mit einer null-terminierten Zeichenkette mit einer Fehlerbeschreibung. Wenn der Transpiler fehlschlägt, wird ein Zeiger auf die Zeichenfolge mit der Fehlerbeschreibung in diesen Zeiger geschrieben. Dieser Zeiger muss mit freigegeben qk_str_free werden. Dies kann ein Nullzeiger sein, in diesem Fall wird der Fehler nicht ausgegeben.

Rückgabe

Der Rückgabecode für den Transpiler, QkExitCode_Success bedeutet Erfolg und alle anderen Werte bedeuten einen Fehler.

qk_transpile_stage_optimization

QkExitCode qk_transpile_stage_optimization(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, char **error, QkTranspilerStageState *state)

Führen Sie die voreingestellte Optimierungsphase des Transpilers auf einer Schaltung aus

Der Qiskit-Transpiler ist ein Quanten-Schaltkreis-Compiler, der einen gegebenen Eingangs-Schaltkreis so umschreibt, dass er den Einschränkungen einer QPU entspricht, und den Schaltkreis für die Ausführung optimiert. Diese Funktion führt die vierte Stufe des voreingestellten Pass-Managers aus, die Optimierung, die den Schaltkreis für das vorgegebene Ziel optimiert, nachdem der Schaltkreis in einen physikalischen Schaltkreis umgewandelt wurde. Weitere Informationen finden Sie unter Optimierungsphase.

Diese Funktion sollte nur mit Schaltungen verwendet werden, die mit der C-API von Qiskit erstellt wurden. Es trifft Annahmen über die Schaltung, indem es nur über C bereitgestellte Funktionen verwendet. Wenn Sie sich in einer gemischten Python und C-Umgebung befinden, ist es in der Regel besser, den Transpiler über Python aufzurufen.

Diese Funktion ist intern multithreading-fähig und startet einen Thread-Pool mit Threads, die standardmäßig der vom Betriebssystem gemeldeten Anzahl von CPUs entsprechen. Dazu gehören logische Kerne auf CPUs mit gleichzeitigem Multithreading. Sie können die Anzahl der Threads mit der Umgebungsvariablen RAYON_NUM_THREADS einstellen. Zum Beispiel würde die Einstellung RAYON_NUM_THREADS=4 den Thread-Pool auf 4 Threads begrenzen.

Sicherheit

Das Verhalten ist undefiniert, wenn dag und keine gültigen, von Null verschiedenen target Zeiger auf ein bzw. QkTarget ein QkDag sind. options muss ein gültiger Zeiger auf a QkTranspileOptions oder sein NULL. error muss ein gültiger Zeiger auf einen char Zeiger oder sein NULL.

Parameter

  • dag – Ein Zeiger auf den Schaltkreis, auf dem der Transpiler ausgeführt werden soll.
  • target - Ein Zeiger auf das Ziel, für das die Schaltung kompiliert werden soll.
  • options - Ein Zeiger auf ein Optionsobjekt, das Benutzeroptionen definiert. Wenn dies ein Null-Zeiger ist, werden die Standardwerte verwendet. Unter qk_transpile_default_options finden Sie weitere Einzelheiten zu den Standardwerten.
  • Fehler – Ein Zeiger auf einen Zeiger mit einer null-terminierten Zeichenkette mit einer Fehlerbeschreibung. Wenn der Transpiler fehlschlägt, wird ein Zeiger auf die Zeichenfolge mit der Fehlerbeschreibung in diesen Zeiger geschrieben. Dieser Zeiger muss mit freigegeben qk_str_free werden. Dies kann ein Nullzeiger sein, in diesem Fall wird der Fehler nicht ausgegeben.
  • state – Ein Zeiger auf ein QkTranspilerStageState Objekt, das das Layout enthält. In der Regel müssen Sie vor dieser Funktion qk_transpile_stage_layout die Funktion ausführen, wodurch ein QkTranspileLayout Objekt mit dem gewünschten Ausgangslayout bereitgestellt wird. Dieses Layout aus der Funktion übernehmen Sie dann als Eingabe für diese Funktion. Wenn Sie kein Layout-Objekt haben (z. B. weil Sie einen eigenen Layout-Durchlauf durchgeführt haben). Sie können das Programm ausführen, um ein qk_transpile_layout_generate_from_mapping einfaches Layout zu generieren (bei dem das virtuelle Qubit 0 im Schaltkreis dem physikalischen Qubit 0 im Ziel zugeordnet wird, 1 -> 1, 2 -> 2 usw.), das dem aktuellen Zustand des DAG entspricht. Auf diese Weise können Sie ein Layout-Objekt für die Optimierungsphase erstellen, wenn Sie Ihr eigenes Layout generieren.

Rückgabe

Der Rückgabecode für den Transpiler, QkExitCode_Success bedeutet Erfolg und alle anderen Werte bedeuten einen Fehler.

qk_transpile_stage_translation

QkExitCode qk_transpile_stage_translation(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, char **error)

Führen Sie die voreingestellte Übersetzungsphase des Transpilers auf einer Schaltung aus

Der Qiskit-Transpiler ist ein Quanten-Schaltkreis-Compiler, der einen gegebenen Eingangs-Schaltkreis so umschreibt, dass er den Einschränkungen einer QPU entspricht, und den Schaltkreis für die Ausführung optimiert. Diese Funktion führt die vierte Stufe des voreingestellten Pass-Managers aus, die Übersetzung, die alle Anweisungen im Schaltkreis in solche übersetzt, die vom Ziel unterstützt werden. Weitere Informationen finden Sie unter Übersetzungsphase.

Diese Funktion sollte nur mit Schaltungen verwendet werden, die mit der C-API von Qiskit erstellt wurden. Es trifft Annahmen über die Schaltung, indem es nur über C bereitgestellte Funktionen verwendet. Wenn Sie sich in einer gemischten Python und C-Umgebung befinden, ist es in der Regel besser, den Transpiler über Python aufzurufen.

Diese Funktion ist intern multithreading-fähig und startet einen Thread-Pool mit Threads, die standardmäßig der vom Betriebssystem gemeldeten Anzahl von CPUs entsprechen. Dazu gehören logische Kerne auf CPUs mit gleichzeitigem Multithreading. Sie können die Anzahl der Threads mit der Umgebungsvariablen RAYON_NUM_THREADS einstellen. Zum Beispiel würde die Einstellung RAYON_NUM_THREADS=4 den Thread-Pool auf 4 Threads begrenzen.

Sicherheit

Das Verhalten ist undefiniert, wenn dag und keine gültigen, von Null verschiedenen target Zeiger auf bzw. QkTarget sind QkDag. options muss ein gültiger Zeiger auf a QkTranspileOptions oder sein NULL. error muss ein gültiger Zeiger auf einen char Zeiger oder sein NULL.

Parameter

  • dag – Ein Zeiger auf den Schaltkreis, auf dem der Transpiler ausgeführt werden soll.
  • target - Ein Zeiger auf das Ziel, für das die Schaltung kompiliert werden soll.
  • options - Ein Zeiger auf ein Optionsobjekt, das Benutzeroptionen definiert. Wenn dies ein Null-Zeiger ist, werden die Standardwerte verwendet. Unter qk_transpile_default_options finden Sie weitere Einzelheiten zu den Standardwerten.
  • Fehler – Ein Zeiger auf einen Zeiger mit einer null-terminierten Zeichenkette mit einer Fehlerbeschreibung. Wenn der Transpiler fehlschlägt, wird ein Zeiger auf die Zeichenfolge mit der Fehlerbeschreibung in diesen Zeiger geschrieben. Dieser Zeiger muss mit freigegeben qk_str_free werden. Dies kann ein Nullzeiger sein, in diesem Fall wird der Fehler nicht ausgegeben.

Rückgabe

Der Rückgabecode für den Transpiler, QkExitCode_Success bedeutet Erfolg und alle anderen Werte bedeuten einen Fehler.

qk_transpile_stage_layout

QkExitCode qk_transpile_stage_layout(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState **state, char **error)

Führen Sie die voreingestellte Layout-Phase des Transpilers auf einer Schaltung aus

Der Qiskit-Transpiler ist ein Quanten-Schaltkreis-Compiler, der einen gegebenen Eingangs-Schaltkreis so umschreibt, dass er den Einschränkungen einer QPU entspricht, und den Schaltkreis für die Ausführung optimiert. Diese Funktion führt die zweite Stufe des voreingestellten Pass -Manager-Layouts aus, das die anfängliche Zuordnung von virtuellen Qubits zu physikalischen Qubits auswählt, einschließlich der Erweiterung der Schaltung um explizite Ancillas. Weitere Informationen finden Sie unter Layout-Phase.

Diese Funktion sollte nur mit Schaltungen verwendet werden, die mit der C-API von Qiskit erstellt wurden. Es trifft Annahmen über die Schaltung, indem es nur über C bereitgestellte Funktionen verwendet. Wenn Sie sich in einer gemischten Python und C-Umgebung befinden, ist es in der Regel besser, den Transpiler über Python aufzurufen.

Diese Funktion ist intern multithreading-fähig und startet einen Thread-Pool mit Threads, die standardmäßig der vom Betriebssystem gemeldeten Anzahl von CPUs entsprechen. Dazu gehören logische Kerne auf CPUs mit gleichzeitigem Multithreading. Sie können die Anzahl der Threads mit der Umgebungsvariablen RAYON_NUM_THREADS einstellen. Zum Beispiel würde die Einstellung RAYON_NUM_THREADS=4 den Thread-Pool auf 4 Threads begrenzen.

Sicherheit

Das Verhalten ist undefiniert, wenn dag oder keine targetgültigen, nicht null-Zeiger auf ein bzw. ein QkDag sind QkTarget . Das Verhalten ist ebenfalls undefiniert, wenn kein gültiger, ausgerichteter Zeiger auf einen Zeiger layout auf einen QkTranspileLayout oder einen Zeiger auf einen NULL Zeiger ist. options muss ein gültiger Zeiger auf a QkTranspileOptions oder sein NULL. error muss ein gültiger Zeiger auf einen char Zeiger oder sein NULL.

Parameter

  • dag – Ein Zeiger auf den Schaltkreis, auf dem der Transpiler ausgeführt werden soll.
  • target - Ein Zeiger auf das Ziel, für das die Schaltung kompiliert werden soll.
  • options - Ein Zeiger auf ein Optionsobjekt, das Benutzeroptionen definiert. Wenn dies ein Null-Zeiger ist, werden die Standardwerte verwendet. Unter qk_transpile_default_options finden Sie weitere Einzelheiten zu den Standardwerten.
  • Zustand – Ein Zeiger auf einen Zeiger auf ein QkTranspilerStageState Objekt. Bei erfolgreicher Ausführung (Rückgabewert 0) wird das vom Transpiler erstellte Layout-Objekt in das State-Objekt geschrieben, auf das dieser Zeiger verweist. Der interne Zeiger hierfür kann null sein, wenn kein Status- oder Layout-Objekt vorhanden ist. Normalerweise würde man, wenn man qk_transpile_stage_init diese Funktion ausführt, den Ausgabestatus dieser Funktion übernehmen und deren Layout als Eingabe hierfür verwenden. Wenn Sie jedoch kein Layout haben, kann der innere Zeiger null sein, und es wird ein neues QkTranspilerStageStateObjekt mit einem Layout zugewiesen, wobei dieser Zeiger hier auf den inneren Wert des Layouts gesetzt wird.
  • Fehler – Ein Zeiger auf einen Zeiger mit einer null-terminierten Zeichenkette mit einer Fehlerbeschreibung. Wenn der Transpiler fehlschlägt, wird ein Zeiger auf die Zeichenfolge mit der Fehlerbeschreibung in diesen Zeiger geschrieben. Dieser Zeiger muss mit freigegeben qk_str_free werden. Dies kann ein Nullzeiger sein, in diesem Fall wird der Fehler nicht ausgegeben.

Rückgabe

Der Rückgabecode für den Transpiler, QkExitCode_Success bedeutet Erfolg und alle anderen Werte bedeuten einen Fehler.

qk_transpile

QkExitCode qk_transpile(const QkCircuit *qc, const QkTarget *target, const QkTranspileOptions *options, QkTranspileResult *result, char **error)

Transpilieren Sie einen einzelnen Stromkreis.

Der Qiskit Transpiler ist ein Quantencompiler, der eine gegebene Eingabeschaltung so umschreibt, dass sie den Beschränkungen einer QPU entspricht und die Schaltung für die Ausführung optimiert. Diese Funktion sollte nur für Schaltkreise verwendet werden, die mit der C-API von Qiskit erstellt wurden. Es macht Annahmen über die Schaltung nur mit Funktionen, die über C ausgesetzt sind, wenn Sie in einer gemischten Python und C-Umgebung ist es in der Regel besser, um den Transpiler über Python aufrufen.

Diese Funktion ist intern multithreading-fähig und startet einen Thread-Pool mit Threads, die standardmäßig der vom Betriebssystem gemeldeten Anzahl von CPUs entsprechen. Dazu gehören logische Kerne auf CPUs mit gleichzeitigem Multithreading. Sie können die Anzahl der Threads mit der Umgebungsvariablen RAYON_NUM_THREADS einstellen. Zum Beispiel würde die Einstellung RAYON_NUM_THREADS=4 den Thread-Pool auf 4 Threads begrenzen.

Sicherheit

Das Verhalten ist undefiniert, wenn circuit, target oder keine gültigen, von Null verschiedenen result Zeiger auf bzw QkTranspileResult . sind QkCircuit``QkTarget. options muss ein gültiger Zeiger auf a QkTranspileOptions oder sein NULL. error muss ein gültiger Zeiger auf einen char Zeiger oder sein NULL.

Parameter

  • qc - Ein Zeiger auf die Schaltung, auf der der Transpiler laufen soll.
  • target - Ein Zeiger auf das Ziel, für das die Schaltung kompiliert werden soll.
  • options - Ein Zeiger auf ein Optionsobjekt, das Benutzeroptionen definiert. Wenn dies ein Null-Zeiger ist, werden die Standardwerte verwendet. Unter qk_transpile_default_options finden Sie weitere Einzelheiten zu den Standardwerten.
  • result - Ein Zeiger auf den Speicherplatz des Transpiler-Ergebnisses. Bei erfolgreicher Ausführung (Returncode 0) wird die Ausgabe des Transpilers in den Zeiger geschrieben. Die Mitglieder der Ergebnisstruktur sind Eigentum des Aufrufers, und Sie sind dafür verantwortlich, die Mitglieder mit den entsprechenden Free-Funktionen freizugeben.
  • Fehler – Ein Zeiger auf einen Zeiger mit einer null-terminierten Zeichenkette mit einer Fehlerbeschreibung. Wenn der Transpiler fehlschlägt, wird ein Zeiger auf die Zeichenfolge mit der Fehlerbeschreibung in diesen Zeiger geschrieben. Dieser Zeiger muss mit freigegeben qk_str_free werden. Dies kann ein Nullzeiger sein, in diesem Fall wird der Fehler nicht ausgegeben.

Rückgabe

Der Rückgabecode für den Transpiler, QkExitCode_Success bedeutet Erfolg und alle anderen Werte bedeuten einen Fehler.

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