Blog

Die Optimierung von Quantenschaltungen ist wichtig. Was macht es schwierig?

15
Juli
,
2022

Warum sollten wir optimieren?

Die Optimierung von Quantenschaltungen ermöglicht es, den größtmöglichen Nutzen aus einer gegebenen Quantenhardware zu ziehen. Es gibt viele mögliche Gründe, warum eine Optimierung für ein bestimmtes Projekt wichtig sein kann. Zum Beispiel:

  • Eine Optimierung, die die erforderlichen Quantenressourcen (z. B. die Anzahl der Qubits, die Anzahl der Zwei-Qubit-Gatter) senkt, kann dazu beitragen, dass ein größeres Problem in einen bestimmten Computer passt. Wenn Ihr Unternehmen eine bestimmte Schaltung heute ausführen kann, während Ihr Konkurrent ein Jahr auf einen größeren Quantencomputer warten muss, hat Ihr Unternehmen gerade einen Vorteil erlangt.
  • Da Quantencomputer unvollkommen sind, könnte die Schaffung flacherer Schaltkreise die Genauigkeit der Ergebnisse erhöhen.
  • Optimierte Schaltungen könnten die Ausführungskosten auf Cloud-Computern senken. Häufig hängen die Ausführungskosten beispielsweise von der Anzahl der Multi-QuBit-Gatter ab, so dass eine Verringerung dieser Anzahl zur Kostensenkung beiträgt.

Wenn Optimierung wichtig ist, wie können wir dann Quantenschaltungen optimieren?

Optimierung auf Gatterebene

Es gibt mehrere nützliche Optimierungen, die auf der Gatterebene vorgenommen werden können. Diese werden von Transpilern und anderen Werkzeugen durchgeführt, die Quanten-Assemblercode erhalten und ihn für einen bestimmten Hardwaretyp verbessern.

Eine solche Optimierung könnte das Vertauschen von Qubits sein. Bei der Swap-Optimierung wird die jeweilige Hardware-Topologie berücksichtigt: welche Qubits nebeneinander liegen. Wenn es beispielsweise in einem bestimmten Quantenschaltkreis mehrere Operationen (z. B. CNOT) gibt, an denen die Qubits 4 und 5 beteiligt sind, in Wirklichkeit aber die Qubits 2 und 5 für Zwei-Qubit-Operationen besser geeignet sind, könnte die Optimierung entscheiden, die Qubits 4 und 2 zu tauschen.

Eine andere Art der Optimierung könnte darin bestehen, Operationen zu entfernen, die sich gegenseitig aufheben, wie z. B. zwei aufeinanderfolgende Hadamard-Tore oder zwei aufeinanderfolgende X-Tore. In diesem Fall könnte die Optimierung wie folgt aussehen:

Es gibt noch ausgefeiltere Versionen davon. Hier ist zum Beispiel ein Beispiel:

Quelle: Brian Siegelwax Beitrag

Optimierungen auf Gatterebene sind zwar nützlich, aber begrenzt, da sie für anspruchsvollere Optimierungen die Absicht des Designers verstehen oder die Schaltung im Wesentlichen automatisch zurückentwickeln müssen. Während ein Transpiler beispielsweise in der Lage ist, zwei aufeinander folgende Hadamard-Gatter zu löschen, ist er nicht in der Lage, eine QFT zu erkennen und zu löschen, die unmittelbar von einer inversen QFT gefolgt wird. Er wird nicht in der Lage sein, eine alternative Implementierung eines Addierers anzubieten oder bessere Möglichkeiten zur Verwendung zusätzlicher Qubits vorzuschlagen, wenn diese verfügbar sind. Ein Transpiler weiß möglicherweise nicht, dass der Entwickler die Schaltungstiefe minimieren oder die minimale Anzahl möglicher Qubits verwenden möchte.

Was ist zu tun? Werfen Sie einen Blick auf die Optimierung auf Funktionsebene.

Optimierung auf der Ebene des Funktionsmodells

Bei der Optimierung auf Funktionsebene muss eine Schaltung nicht "zurückentwickelt" werden, da sie den Entwurf als eine Reihe miteinander verbundener Funktionen betrachtet. Sie generiert dann eine Schaltung, die auf den vom Designer definierten Optimierungszielen basiert. Ein Funktionsmodell-Optimierer kann viele Dinge tun, die ein Gate-Level-Optimierer nicht kann. Hier sind ein paar Beispiele:

Untersuchung der alternativen Implementierung von Funktionsblöcken

Für einen Funktionsblock wie einen Quantenaddierer oder einen Zustandsvorbereitungsblock gibt es mehrere mögliche Implementierungen. So kann ein Addierer beispielsweise als QFT-Addierer oder als Ripple-Addierer implementiert werden. Ein Optimierer am Funktionsmodell kann die beste Implementierung entsprechend den systemweiten Einschränkungen auswählen. Dieser Punkt über systemweite Einschränkungen ist wichtig. Auch wenn es für jeden einzelnen Block eine optimale Implementierung geben kann, lohnt es sich manchmal, einen Block auf eine scheinbar weniger effiziente Weise zu implementieren, wenn dies anderen Teilen des Systems zugute kommt. Wenn beispielsweise weniger Qubits verwendet werden, werden diese Ressourcen für einen anderen Block frei, der parallel ausgeführt werden kann.

Mehr oder weniger Hilfsqubits verwenden

Stellen Sie sich ein MCX-Gatter (Multi-Controlled Toffoli) vor. Es gibt viele Möglichkeiten, es zu implementieren, wenn man mehr oder weniger Hilfsqubits hat. Siehe diese Diskussion als Beispiel. Ein Optimierer auf Funktionsebene kann die richtige Implementierung auf der Grundlage der besten Zuweisung von Systemressourcen wählen.

Nebenbei bemerkt, hat der Classiq Coding Competition viele verschiedene Möglichkeiten zur Implementierung von MCX-Gattern aufgezeigt.

‍Qubits bei Bedarf wiederverwenden

Ein Funktionsmodell-Optimierer versteht die Eingänge und Ausgänge jedes Funktionsblocks und unterscheidet zwischen Ausgangsqubits, die den Ausgang tragen, und Hilfsqubits, die nicht berechnet und wiederverwendet werden können. Wenn zum Beispiel die Funktion F zwei nützliche Ausgänge und ein Hilfsqubit hat, kann dieses Hilfsqubit wiederverwendet werden. In der nachstehenden Version "A" werden insgesamt neun Qubits für drei Instanzen der Funktion F verwendet, aber wenn nur acht verfügbar sind (Version "B"), wird das Hilfsqubit der zweiten Instanz wiederverwendet. In Version "C" gibt es sogar noch weniger Qubits, so dass wir eine kaskadierende Verwendung von Hilfsqubits sehen. Dies wäre bei der Verwendung eines Modells auf Gatterebene äußerst schwierig zu erkennen und umzusetzen.

‍Ändern Siedie Reihenfolge der kommutativen Operationen

Die nachstehende Version "A" enthält vier Hamilton-Terme. Die Version "B" optimiert sie, indem sie ihre Reihenfolge umkehrt. Wenn man versteht, dass es sich um einen Hamilton-Term handelt, kann man mit einem funktionalen Modell eine solche Optimierung durchführen. Übrigens gibt es viele weitere Beispiele für die Optimierung von Hamiltonschen Potenzierungsproblemen.

Zusammenfassung

Dies waren nur einige von vielen möglichen Beispielen. Andere könnten eine Änderung der Schaltung auf der Grundlage des Rauschmodells der Zielplattform, der gewünschten Genauigkeit oder vieler anderer Varianten beinhalten.

Ausgehend von diesen und vielen anderen Beispielen kann man meiner Meinung nach sagen, dass

Es versteht sich von selbst, dass die Optimierung auf höheren Abstraktionsebenen [z. B. auf der Funktionsebene] der Optimierung auf niedrigeren Ebenen mathematisch überlegen ist.

Kurz gesagt: Optimierung ist wichtig. Qualitativ hochwertige Optimierung ist auf der Ebene des Gates sehr schwierig, aber sie ist nicht mehr schwierig, wenn man auf der funktionalen Ebene arbeitet und die richtige Plattform verwendet .

Wenn Sie sehen möchten, wie die Classiq-Plattform Sie bei der Erstellung optimierter und hardwaregerechter Schaltungen unterstützt, vereinbaren Sie einen Demo-Termin mit uns.

Warum sollten wir optimieren?

Die Optimierung von Quantenschaltungen ermöglicht es, den größtmöglichen Nutzen aus einer gegebenen Quantenhardware zu ziehen. Es gibt viele mögliche Gründe, warum eine Optimierung für ein bestimmtes Projekt wichtig sein kann. Zum Beispiel:

  • Eine Optimierung, die die erforderlichen Quantenressourcen (z. B. die Anzahl der Qubits, die Anzahl der Zwei-Qubit-Gatter) senkt, kann dazu beitragen, dass ein größeres Problem in einen bestimmten Computer passt. Wenn Ihr Unternehmen eine bestimmte Schaltung heute ausführen kann, während Ihr Konkurrent ein Jahr auf einen größeren Quantencomputer warten muss, hat Ihr Unternehmen gerade einen Vorteil erlangt.
  • Da Quantencomputer unvollkommen sind, könnte die Schaffung flacherer Schaltkreise die Genauigkeit der Ergebnisse erhöhen.
  • Optimierte Schaltungen könnten die Ausführungskosten auf Cloud-Computern senken. Häufig hängen die Ausführungskosten beispielsweise von der Anzahl der Multi-QuBit-Gatter ab, so dass eine Verringerung dieser Anzahl zur Kostensenkung beiträgt.

Wenn Optimierung wichtig ist, wie können wir dann Quantenschaltungen optimieren?

Optimierung auf Gatterebene

Es gibt mehrere nützliche Optimierungen, die auf der Gatterebene vorgenommen werden können. Diese werden von Transpilern und anderen Werkzeugen durchgeführt, die Quanten-Assemblercode erhalten und ihn für einen bestimmten Hardwaretyp verbessern.

Eine solche Optimierung könnte das Vertauschen von Qubits sein. Bei der Swap-Optimierung wird die jeweilige Hardware-Topologie berücksichtigt: welche Qubits nebeneinander liegen. Wenn es beispielsweise in einem bestimmten Quantenschaltkreis mehrere Operationen (z. B. CNOT) gibt, an denen die Qubits 4 und 5 beteiligt sind, in Wirklichkeit aber die Qubits 2 und 5 für Zwei-Qubit-Operationen besser geeignet sind, könnte die Optimierung entscheiden, die Qubits 4 und 2 zu tauschen.

Eine andere Art der Optimierung könnte darin bestehen, Operationen zu entfernen, die sich gegenseitig aufheben, wie z. B. zwei aufeinanderfolgende Hadamard-Tore oder zwei aufeinanderfolgende X-Tore. In diesem Fall könnte die Optimierung wie folgt aussehen:

Es gibt noch ausgefeiltere Versionen davon. Hier ist zum Beispiel ein Beispiel:

Quelle: Brian Siegelwax Beitrag

Optimierungen auf Gatterebene sind zwar nützlich, aber begrenzt, da sie für anspruchsvollere Optimierungen die Absicht des Designers verstehen oder die Schaltung im Wesentlichen automatisch zurückentwickeln müssen. Während ein Transpiler beispielsweise in der Lage ist, zwei aufeinander folgende Hadamard-Gatter zu löschen, ist er nicht in der Lage, eine QFT zu erkennen und zu löschen, die unmittelbar von einer inversen QFT gefolgt wird. Er wird nicht in der Lage sein, eine alternative Implementierung eines Addierers anzubieten oder bessere Möglichkeiten zur Verwendung zusätzlicher Qubits vorzuschlagen, wenn diese verfügbar sind. Ein Transpiler weiß möglicherweise nicht, dass der Entwickler die Schaltungstiefe minimieren oder die minimale Anzahl möglicher Qubits verwenden möchte.

Was ist zu tun? Werfen Sie einen Blick auf die Optimierung auf Funktionsebene.

Optimierung auf der Ebene des Funktionsmodells

Bei der Optimierung auf Funktionsebene muss eine Schaltung nicht "zurückentwickelt" werden, da sie den Entwurf als eine Reihe miteinander verbundener Funktionen betrachtet. Sie generiert dann eine Schaltung, die auf den vom Designer definierten Optimierungszielen basiert. Ein Funktionsmodell-Optimierer kann viele Dinge tun, die ein Gate-Level-Optimierer nicht kann. Hier sind ein paar Beispiele:

Untersuchung der alternativen Implementierung von Funktionsblöcken

Für einen Funktionsblock wie einen Quantenaddierer oder einen Zustandsvorbereitungsblock gibt es mehrere mögliche Implementierungen. So kann ein Addierer beispielsweise als QFT-Addierer oder als Ripple-Addierer implementiert werden. Ein Optimierer am Funktionsmodell kann die beste Implementierung entsprechend den systemweiten Einschränkungen auswählen. Dieser Punkt über systemweite Einschränkungen ist wichtig. Auch wenn es für jeden einzelnen Block eine optimale Implementierung geben kann, lohnt es sich manchmal, einen Block auf eine scheinbar weniger effiziente Weise zu implementieren, wenn dies anderen Teilen des Systems zugute kommt. Wenn beispielsweise weniger Qubits verwendet werden, werden diese Ressourcen für einen anderen Block frei, der parallel ausgeführt werden kann.

Mehr oder weniger Hilfsqubits verwenden

Stellen Sie sich ein MCX-Gatter (Multi-Controlled Toffoli) vor. Es gibt viele Möglichkeiten, es zu implementieren, wenn man mehr oder weniger Hilfsqubits hat. Siehe diese Diskussion als Beispiel. Ein Optimierer auf Funktionsebene kann die richtige Implementierung auf der Grundlage der besten Zuweisung von Systemressourcen wählen.

Nebenbei bemerkt, hat der Classiq Coding Competition viele verschiedene Möglichkeiten zur Implementierung von MCX-Gattern aufgezeigt.

‍Qubits bei Bedarf wiederverwenden

Ein Funktionsmodell-Optimierer versteht die Eingänge und Ausgänge jedes Funktionsblocks und unterscheidet zwischen Ausgangsqubits, die den Ausgang tragen, und Hilfsqubits, die nicht berechnet und wiederverwendet werden können. Wenn zum Beispiel die Funktion F zwei nützliche Ausgänge und ein Hilfsqubit hat, kann dieses Hilfsqubit wiederverwendet werden. In der nachstehenden Version "A" werden insgesamt neun Qubits für drei Instanzen der Funktion F verwendet, aber wenn nur acht verfügbar sind (Version "B"), wird das Hilfsqubit der zweiten Instanz wiederverwendet. In Version "C" gibt es sogar noch weniger Qubits, so dass wir eine kaskadierende Verwendung von Hilfsqubits sehen. Dies wäre bei der Verwendung eines Modells auf Gatterebene äußerst schwierig zu erkennen und umzusetzen.

‍Ändern Siedie Reihenfolge der kommutativen Operationen

Die nachstehende Version "A" enthält vier Hamilton-Terme. Die Version "B" optimiert sie, indem sie ihre Reihenfolge umkehrt. Wenn man versteht, dass es sich um einen Hamilton-Term handelt, kann man mit einem funktionalen Modell eine solche Optimierung durchführen. Übrigens gibt es viele weitere Beispiele für die Optimierung von Hamiltonschen Potenzierungsproblemen.

Zusammenfassung

Dies waren nur einige von vielen möglichen Beispielen. Andere könnten eine Änderung der Schaltung auf der Grundlage des Rauschmodells der Zielplattform, der gewünschten Genauigkeit oder vieler anderer Varianten beinhalten.

Ausgehend von diesen und vielen anderen Beispielen kann man meiner Meinung nach sagen, dass

Es versteht sich von selbst, dass die Optimierung auf höheren Abstraktionsebenen [z. B. auf der Funktionsebene] der Optimierung auf niedrigeren Ebenen mathematisch überlegen ist.

Kurz gesagt: Optimierung ist wichtig. Qualitativ hochwertige Optimierung ist auf der Ebene des Gates sehr schwierig, aber sie ist nicht mehr schwierig, wenn man auf der funktionalen Ebene arbeitet und die richtige Plattform verwendet .

Wenn Sie sehen möchten, wie die Classiq-Plattform Sie bei der Erstellung optimierter und hardwaregerechter Schaltungen unterstützt, vereinbaren Sie einen Demo-Termin mit uns.

Über "Der Podcast des Qubit-Typen"

Der Podcast wird von The Qubit Guy (Yuval Boger, unser Chief Marketing Officer) moderiert. In ihm diskutieren Vordenker der Quanteninformatik über geschäftliche und technische Fragen, die das Ökosystem der Quanteninformatik betreffen. Unsere Gäste geben interessante Einblicke in Quantencomputer-Software und -Algorithmen, Quantencomputer-Hardware, Schlüsselanwendungen für Quantencomputer, Marktstudien der Quantenindustrie und vieles mehr.

Wenn Sie einen Gast für den Podcast vorschlagen möchten, kontaktieren Sie uns bitte .

Erstellen Sie Quantensoftware ohne Grenzen 

Kontakt