Feynman ist ein Toolkit zur Quantenschaltkreisanalyse im Pfadintegralmodell der Quantenmechanik. Das Toolkit umfasst Synthese-, Optimierungs- und Verifizierungsmethoden, die auf Darstellungen von Schaltkreisaktionen als Summen über Pfaden basieren.
Für die Anbindung an das Feynman-Projekt sind zwei Möglichkeiten möglich. Auf Feynman basierende eigenständige Tools, die in Tools zu finden sind, bieten Befehlszeilenschnittstellen zum Optimieren und/oder Verifizieren von Quantenschaltungen, oder die Feynman-Bibliothek kann importiert und direkt in anderen Haskell-Projekten verwendet werden.
Das Feynman-Projekt erfordert GHC >=8.0.2 und Cabal >=1.24.0. Ältere Versionen von GHC funktionieren möglicherweise, wurden jedoch nicht getestet.
Die Feynman-Bibliothek und binäre ausführbare Dateien zur Optimierung ( feynopt
) und Verifizierung ( feynver
) können global mit installiert werden
cabal install
oder über die etwas detailliertere Befehlsreihe
cabal configure
cabal build
cabal install
Abhängigkeitshölle ist ein häufiges Problem in Haskell, daher hatten frühere Versionen von Cabal die Möglichkeit, explizit eine lokale Sandbox zu erstellen, in der Paketabhängigkeiten installiert wurden, ohne dass es zu Problemen für andere Pakete kam. Um die Abhängigkeiten von Feynman in einer Sandbox zu installieren, führen Sie vor dem Erstellen oder Installieren von Feynman den ersten Start aus
# Cabal 1 & 2
cabal sandbox init
cabal install --only-dependencies
# Cabal 3
cabal v1-sandbox init
cabal install --only-dependencies
Standardmäßig installiert Cabal die Binärdateien in ~/cabal/bin/
für Unix-Builds. Um einen anderen Ordner anzugeben, installieren Sie mit
cabal install --installdir=DIR
Feynman verfügt derzeit über Frontends für openQASM und .qc. Beispiele für beides finden Sie im Benchmark-Ordner.
Um den Feynman-Optimierer feynopt
für eine .qc- oder openQASM-Datei auszuführen, führen Sie den Befehl aus
feynopt <filename>.(qc | qasm)
feynopt
erkennt die Erweiterungen .qc und .qasm automatisch als .qc- bzw. openQASM-Dateien.
Verwenden Sie den Befehl, um eine Liste aller verfügbaren Optimierungen und Transformationen anzuzeigen
feynopt -h
Das binäre feynver
-Tool ermöglicht die Äquivalenzprüfung einzelner Schaltkreisdateien. Standardverwendung ist
feynver <filename1>.qc <filename2>.qc
Die Eingabeschaltkreise müssen sich auf die Namen der primären Eingaben (d. h. nicht initialisierte Qubits) einigen, sie können jedoch unterschiedliche Ancillas verwenden.
Hinweis: feynver
unterstützt derzeit nur das .qc-Frontend
Das Feynman-Repository enthält eine Reihe von Quantenschaltungs-Benchmarks, die im Ordner benchmarks
zu finden sind. Weitere Informationen zu den Benchmarks finden Sie unter Formal Methods in Quantum Circuit Design.
Die Benchmark-Suite enthält auch Beispiel-OpenQASM-Schaltkreise, die aus dem OpenQASM-Github-Repository stammen.
Feynman ist eine Sammlung von Algorithmen und Techniken, die mehrere Arbeiten umfasst. Wenn Sie in einer wissenschaftlichen Arbeit zitieren möchten, sind die relevanten Arbeiten unten aufgeführt.
Matthew Amy