Erstellen und Ausführen einer Qiskit-Funktionsvorlage für die Simulation der elektronischen Struktur mit einem impliziten Lösungsmittelmodell
Diese Vorlage, die in Zusammenarbeit mit der Cleveland Clinic entwickelt wurde, besteht aus einem Arbeitsablauf zur Berechnung der Grundzustandsenergie und der freien Solvatationsenergie eines Moleküls in einem impliziten Lösungsmittel [1]. Diese Simulationen basieren auf der sample-based quantum diagonalization (SQD)-Methode [2-6] und dem Integralgleichungsformalismus polarizable continuum model (IEF-PCM) des Lösungsmittels [7].
Eine Schritt-für-Schritt-Anleitung zu diesem Arbeitsablauf mit einem Beispiel finden Sie im Tutorial „Berechnungen mit implizitem Lösungsmittel unter Verwendung von Qiskit Serverless “.
In diesem Leitfaden wird die Vorlage mit einem Methanolmolekül als gelöstem Stoff, dessen elektronische Struktur explizit simuliert wird, und Wasser als Lösungsmittel, das als kontinuierliches dielektrisches Medium angenähert wird, verwendet. Um den Elektronenkorrelationseffekten in Methanol Rechnung zu tragen und gleichzeitig das Gleichgewicht zwischen Rechenkosten und Genauigkeit zu wahren, werden nur die Orbitale , und einsame Paare in den mit SQD IEF-PCM simulierten aktiven Raum einbezogen. Diese Orbitalauswahl erfolgt mit der AVAS-Methode (atomic valence active space) unter Verwendung der atomaren Orbitalkomponenten [C2s,2p], [O2s,2p] und [H1s], woraus sich der aktive Raum mit 14 Elektronen und 12 Orbitalen ergibt ( 14e,12o ). Die Referenzorbitale werden mit Hartree-Fock-Orbitalen mit geschlossener Schale und dem cc-pvdz-Basissatz berechnet.
Einführung in den Arbeitsablauf
Diese interaktive Anleitung zeigt, wie Sie diese Funktionsvorlage in Qiskit Serverless hochladen und einen Beispiel-Workload ausführen. Die Vorlage ist wie ein Qiskit-Muster mit vier Schritten aufgebaut:
1. Sammeln Sie Input und erfassen Sie das Problem
In diesem Schritt werden die Geometrie des Moleküls, der ausgewählte aktive Raum, das Solvatationsmodell, die LUCJ-Optionen und die SQD-Optionen eingegeben. Anschließend wird die Datei PySCF Checkpoint erstellt, die die Hartree-Fock (HF)-IEF-PCM-Daten enthält. Diese Daten werden im SQD-Teil des Arbeitsablaufs verwendet. Für den LUCJ-Teil des Arbeitsablaufs erzeugt der Eingabebereich auch die Gasphasen-HF-Daten, die intern im PySCF FCIDUMP-Format gespeichert werden.
Die Informationen aus der HF-Gasphasensimulation und die Definition des aktiven Raums werden als Input verwendet. Wichtig ist, dass es auch die benutzerdefinierten Informationen aus dem Eingabebereich verwendet, die die Fehlerunterdrückung, die Anzahl der Schüsse, die Optimierungsstufe des Circuit Transpiler und das Qubit-Layout betreffen.
Es erzeugt Ein- und Zwei-Elektronen-Integrale innerhalb des definierten aktiven Raums. Die Integrale werden dann zur Durchführung klassischer CCSD-Berechnungen verwendet, die t2 Amplituden liefern, die wir zur Parametrisierung des LUCJ-Kreises verwenden.
2. Optimieren Sie den Schaltkreis
Die LUCJ-Schaltung wird dann in eine ISA-Schaltung für die Zielhardware umgesetzt. Anschließend wird ein Sampler-Primitiv instanziiert, das einen Standardsatz von Optionen zur Fehlerbegrenzung enthält, um die Ausführung zu verwalten.
3. Führen Sie den Schaltkreis aus
Die LUCJ-Berechnungen liefern die Bitstrings für jede Messung, wobei diese Bitstrings den Elektronenkonfigurationen des untersuchten Systems entsprechen. Die Bitstrings werden dann als Input für die Nachbearbeitung verwendet.
4. Nachbearbeitung mit SQD
In diesem letzten Schritt wird die PySCF Checkpoint-Datei mit den HF IEF-PCM-Informationen, den Bitstrings, die die von LUCJ vorhergesagten Elektronenkonfigurationen darstellen, und den im Eingabeabschnitt ausgewählten benutzerdefinierten SQD-Optionen als Eingabe verwendet. Als Ergebnis erhält man die SQD IEF-PCM-Gesamtenergie der Charge mit der niedrigsten Energie und die entsprechende freie Solvatationsenergie.
Optionen
Für diese Vorlage müssen Sie Optionen für die Erzeugung der LUCJ-Schaltung und SQD-Laufparameter angeben.
LUCJ-Optionen
Bei der Ausführung des LUCJ-Quantenschaltkreises wird eine Reihe von Proben erzeugt, die die Berechnungsbasiszustände aus der Wahrscheinlichkeitsverteilung des molekularen Systems darstellen. Um die Tiefe des LUCJ-Schaltkreises und seine Ausdrucksfähigkeit auszugleichen, werden zwischen den Qubits, die den Spin-Orbitalen mit dem entgegengesetzten Spin entsprechen, die Zwei-Qubit-Gatter angewendet, wenn diese Qubits durch ein einziges Ancilla-Qubit benachbart sind. Um diesen Ansatz auf IBM Hardware mit einer Heavy-Hex-Topologie zu implementieren, werden die Qubits, die die Spin-Orbitale mit demselben Spin repräsentieren, durch eine Linientopologie verbunden, wobei jede Linie aufgrund der Heavy-Hex-Konnektivität der Zielhardware eine Zick-Zack-Form annimmt, während die Qubits, die die Spin-Orbitale mit dem entgegengesetzten Spin repräsentieren, nur bei jedem vierten Qubit eine Verbindung haben.
Der Benutzer muss das Array
initial_layout, das den Qubits entspricht, die diese zickzack muster erfüllen, im Abschnittlucj_optionsder Funktion SQD IEF-PCM angeben. Im Falle der SQD IEF-PCM ( 14e,12o )/cc-pvdz-Simulationen von Methanol haben wir das anfängliche Qubit-Layout gewählt, das der Hauptdiagonale der Eagle R3 QPU entspricht. Hier entsprechen die ersten 12 Elemente desinitial_layoutArrays[0, 14, 18, 19, 20, 33, 39, 40, 41, 53, 60, 61, ...]den Alpha-Spin-Orbitalen. Die letzten 12 Elemente[... 2, 3, 4, 15, 22, 23, 24, 34, 43, 44, 45, 54]entsprechen den Beta-Spin-Orbitalen.Wichtig ist, dass der Benutzer die
number_of_shotsbestimmt, die der Anzahl der Messungen in der LUCJ-Schaltung entspricht. Die Anzahl der Schüsse muss ausreichend groß sein, da der erste Schritt des S-CORE-Verfahrens auf den Proben im rechten Teilchensektor beruht, um eine erste Annäherung an die Grundzustandsbesetzungszahlverteilung zu erhalten.Die Anzahl der Schüsse ist in hohem Maße system- und hardwareabhängig, aber nicht-kovalente, fragmentbasierte und implizite Lösungsmittel-SQD-Studien legen nahe, dass man die chemische Genauigkeit erreichen kann, wenn man diese Richtlinien befolgt:
- 20.000 - 200.000 Schüsse für Systeme mit weniger als 16 Molekülorbitalen (32 Spin-Orbitale)
- 200.000 Aufnahmen für Systeme mit 16 - 18 Molekülorbitalen
- 200.000 - 2.000.000 Schüsse für Systeme mit mehr als 18 Molekülorbitalen
Die erforderliche Anzahl von Berechnungen hängt von der Anzahl der Spinorbitale im untersuchten System sowie von der Größe des Hilbertraums ab, der dem ausgewählten aktiven Raum innerhalb des untersuchten Systems entspricht. Im Allgemeinen erfordern Fälle mit kleineren Hilberträumen weniger Schüsse. Weitere verfügbare LUCJ-Optionen sind die Optimierungsstufe des Schaltkreis-Transpilers und Optionen zur Fehlerunterdrückung. Beachten Sie, dass sich diese Optionen auch auf die erforderliche Anzahl von Aufnahmen und die daraus resultierende Genauigkeit auswirken.
SQD-Optionen
Wichtige Optionen in SQD-Simulationen sind die sqd_iterations, number_of_batches und samples_per_batch. Im Allgemeinen kann die geringere Anzahl von Stichproben pro Los durch mehr Lose (number_of_batches) und mehr Iterationen von S-CORE (sqd_iterations) ausgeglichen werden. Mit mehr Stapeln können wir mehr Variationen der Konfigurationsunterräume abtasten. Da die Charge mit der niedrigsten Energie als Lösung für die Grundzustandsenergie des Systems genommen wird, können mehr Chargen die Ergebnisse durch bessere Statistiken verbessern. Durch zusätzliche Iterationen von S-CORE können mehr Konfigurationen aus der ursprünglichen LUCJ-Verteilung wiederhergestellt werden, wenn die Anzahl der Proben im richtigen Partikelsektor gering ist. Dadurch kann die Anzahl der Proben pro Charge reduziert werden.
Eine alternative Strategie besteht darin, mehr Proben pro Charge zu verwenden, wodurch sichergestellt wird, dass die meisten der anfänglichen LUCJ-Proben im richtigen Teilchenraum während des S-CORE-Verfahrens verwendet werden und die einzelnen Teilräume eine ausreichende Vielfalt von Elektronenkonfigurationen umfassen. Dadurch verringert sich wiederum die Anzahl der erforderlichen S-CORE-Schritte, wobei nur zwei oder drei SQD-Iterationen erforderlich sind, wenn die Anzahl der Proben pro Charge groß genug ist. Mehr Stichproben pro Stapel führen jedoch zu einem höheren Rechenaufwand für jeden Diagonalisierungsschritt. Daher kann das Gleichgewicht zwischen Genauigkeit und Rechenkosten bei SQD-Simulationen durch die optimale Wahl von
sqd_iterations,number_of_batchesundsamples_per_batcherreicht werden.Die SQD IEF-PCM-Studie zeigt, dass bei Verwendung von drei Iterationen von S-CORE die chemische Genauigkeit erreicht werden kann, wenn diese Leitlinien befolgt werden:
- 600 Proben pro Charge in Methanol SQD IEF-PCM ( 14e,12o ) Simulationen
- 1500 Proben pro Charge in Methylamin SQD IEF-PCM ( 14e,13o ) Simulationen
- 6000 Proben pro Charge in Wasser SQD IEF-PCM ( 8e,23o ) Simulationen
- 16000 Proben pro Charge in Ethanol SQD IEF-PCM ( 20e,18o ) Simulationen
Genau wie die erforderliche Anzahl von Schüssen in LUCJ ist auch die erforderliche Anzahl von Proben pro Charge im S-CORE-Verfahren stark system- und hardwareabhängig. Die obigen Beispiele können verwendet werden, um den Ausgangspunkt für den Benchmark der erforderlichen Anzahl von Proben pro Charge zu schätzen. Die Anleitung zum systematischen Benchmarking der erforderlichen Anzahl von Proben pro Charge finden Sie hier.
Die Vorlage SQD IEF-PCM-Funktion bereitstellen und ausführen
Authentifizierung
Verwenden Sie qiskit-ibm-catalog , um sich bei QiskitServerless mit Ihrem API-Schlüssel (Token) zu authentifizieren, den Sie auf dem Dashboard der IBM Quantum Platform finden. Dies ermöglicht die Instanziierung des serverlosen Clients zum Hochladen oder Ausführen der ausgewählten Funktion:
from qiskit_ibm_catalog import QiskitServerless
serverless = QiskitServerless(
channel="ibm_quantum_platform",
instance="INSTANCE_CRN",
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform Home dashboard
token="YOUR_API_KEY"
)Optional können Sie save_account() verwenden, um Ihre Anmeldedaten in einer lokalen Umgebung zu speichern (siehe Anleitung zum Einrichten Ihres IBM Cloud Kontos ). Beachten Sie, dass dies Ihre Anmeldedaten in dieselbe Datei schreibt wie QiskitRuntimeService.save_account():
QiskitServerless.save_account(token="YOUR_API_KEY",
channel="ibm_quantum_platform", instance="INSTANCE_CRN")Wenn das Konto gespeichert ist, muss kein Token zur Authentifizierung angegeben werden:
from qiskit_ibm_catalog import QiskitServerless
serverless = QiskitServerless()Laden Sie die Vorlage hoch
Um eine benutzerdefinierte Qiskit-Funktion hochzuladen, müssen Sie zunächst ein QiskitFunction Objekt instanziieren, das den Quellcode der Funktion definiert. Anhand des Titels können Sie die Funktion identifizieren, sobald sie sich im Remote-Cluster befindet. Der Haupteinstiegspunkt ist die Datei, die if __name__ == "__main__" enthält. Wenn Ihr Arbeitsablauf zusätzliche Quelldateien erfordert, können Sie ein Arbeitsverzeichnis definieren, das zusammen mit dem Einstiegspunkt hochgeladen wird.
from qiskit_ibm_catalog import QiskitFunction
template = QiskitFunction(
title="sqd_pcm_template",
entrypoint="sqd_pcm_entrypoint.py",
# all files in `working_dir` will be uploaded
working_dir="./source_files/",
dependencies=[
"ffsim==0.0.54",
"pyscf==2.9.0",
"qiskit_addon_sqd==0.10.0",
],
)
print(template)Output:
QiskitFunction(sqd_pcm_template)
Sobald die Instanz fertig ist, laden Sie sie auf Serverless hoch:
serverless.upload(template)Output:
QiskitFunction(sqd_pcm_template)
Um zu überprüfen, ob das Programm erfolgreich hochgeladen wurde, verwenden Sie serverless.list():
serverless.list()Output:
[QiskitFunction(sqd_pcm_template),
QiskitFunction(hamiltonian_simulation_template)]
Laden und führen Sie die Vorlage remote aus
Die Funktionsvorlage wurde hochgeladen, sodass Sie sie mit Qiskit Serverless aus der Ferne ausführen können. Laden Sie zunächst die Vorlage nach ihrem Namen:
template = serverless.load("sqd_pcm_template")
print(template)Output:
QiskitFunction(sqd_pcm_template)
Führen Sie anschließend die Vorlage mit den Eingaben auf Domänenebene für SQD-IEF PCM aus. In diesem Beispiel wird eine Arbeitslast auf Methanolbasis angegeben.
molecule = {
"atom": """
O -0.04559 -0.75076 -0.00000;
C -0.04844 0.65398 -0.00000;
H 0.85330 -1.05128 -0.00000;
H -1.08779 0.98076 -0.00000;
H 0.44171 1.06337 0.88811;
H 0.44171 1.06337 -0.88811
""", # Must be specified
"basis": "cc-pvdz", # default is "sto-3g"
"spin": 0, # default is 0
"charge": 0, # default is 0
"verbosity": 0, # default is 0
"number_of_active_orb": 12, # Must be specified
"number_of_active_alpha_elec": 7, # Must be specified
"number_of_active_beta_elec": 7, # Must be specified
"avas_selection": [
"%d O %s" % (k, x) for k in [0] for x in ["2s", "2px", "2py", "2pz"]
]
+ ["%d C %s" % (k, x) for k in [1] for x in ["2s", "2px", "2py", "2pz"]]
+ ["%d H 1s" % k for k in [2, 3, 4, 5]], # default is None
}
solvent_options = {
# See https://manual.q-chem.com/5.4/topic_pcm-em.html for all methods
"method": "IEF-PCM", # other available methods are COSMO, C-PCM, SS(V)PE
"eps": 78.3553, # value for water
}
lucj_options = {
"initial_layout": [
0,
14,
18,
19,
20,
33,
39,
40,
41,
53,
60,
61,
2,
3,
4,
15,
22,
23,
24,
34,
43,
44,
45,
54,
],
"dynamical_decoupling_choice": True,
"twirling_choice": True,
"number_of_shots": 200000,
"optimization_level": 2,
}
sqd_options = {
"sqd_iterations": 3,
"number_of_batches": 10,
"samples_per_batch": 1000,
"max_davidson_cycles": 200,
}
backend_name = "ibm_sherbrooke"job = template.run(
backend_name=backend_name,
molecule=molecule,
solvent_options=solvent_options,
lucj_options=lucj_options,
sqd_options=sqd_options,
)
print(job.job_id)Output:
39f8fb70-79b2-43ca-b723-84e6b6135821
Überprüfen Sie den detaillierten Status des Auftrags:
import time
t0 = time.time()
status = job.status()
if status == "QUEUED":
print(f"time = {time.time()-t0:.2f}, status = QUEUED")
while True:
status = job.status()
if status == "QUEUED":
continue
print(f"time = {time.time()-t0:.2f}, status = {status}")
if status == "DONE" or status == "ERROR":
breakOutput:
time = 2.35, status = DONE
Während der Auftrag läuft, können Sie Protokolle abrufen, die von den logger.info Ausgaben erstellt wurden. Diese können verwertbare Informationen über den Fortschritt des SQD-IEF-PCM-Workflows liefern. Zum Beispiel die gleichen Spin-Orbital-Verbindungen oder die Zwei-Qubit-Tiefe des endgültigen ISA-Schaltkreises, der für die Ausführung in Hardware vorgesehen ist.
print(job.logs())Die Abfrage des Auftragsergebnisses blockiert den Rest des Programms, bis ein Ergebnis vorliegt. Nach Abschluss der Arbeit können Sie die Ergebnisse abrufen. Dazu gehören die freie Solvatationsenergie sowie Informationen über die niedrigste Energiecharge, den niedrigsten Energiewert und andere nützliche Informationen wie die Gesamtdauer des Solvers.
result = job.result()
resultOutput:
{'total_energy_hist': array([[-115.14768518, -115.1368396 , -114.19181692, -115.13745429,
-115.1445012 , -114.19673326, -115.1547003 , -114.20563866,
-115.13748344, -115.14764974],
[-115.15768392, -115.15850126, -115.15857275, -115.15770916,
-115.15801684, -115.15822125, -115.15833521, -115.15844051,
-115.15735538, -115.15862354],
[-115.15795148, -115.15847925, -115.15856677, -115.15811156,
-115.15815602, -115.15785171, -115.1583672 , -115.1585533 ,
-115.15833528, -115.15808791]]),
'spin_squared_value_hist': array([[5.37327508e-03, 1.32981759e-02, 1.36214922e-02, 8.84413615e-03,
7.26723578e-03, 1.94875195e-02, 3.03153152e-03, 6.07543106e-03,
1.04951849e-02, 5.36529204e-03],
[6.39397528e-04, 1.36814350e-04, 9.09054260e-05, 5.99361358e-04,
3.64261739e-04, 2.54905866e-04, 2.32540370e-04, 1.53181990e-04,
7.23519739e-04, 6.80737671e-05],
[4.53776416e-04, 1.63043449e-04, 1.05317263e-04, 3.82912836e-04,
3.41047803e-04, 5.18620393e-04, 2.06819142e-04, 1.17086537e-04,
2.32357159e-04, 4.26071537e-04]]),
'solvation_free_energy_hist': array([[-0.00725018, -0.00743955, -0.01132905, -0.0073377 , -0.00722221,
-0.01136705, -0.00719279, -0.01072829, -0.00733404, -0.00725961],
[-0.00719252, -0.00718315, -0.00718074, -0.00719325, -0.00717703,
-0.00718391, -0.00718354, -0.00717928, -0.00719887, -0.0071801 ],
[-0.00719351, -0.00718255, -0.00718198, -0.00718429, -0.00718349,
-0.00718329, -0.0071882 , -0.00718363, -0.00718549, -0.00718814]]),
'occupancy_hist': [[array([0.99712298, 0.99278936, 0.99083163, 0.97328469, 0.98959809,
0.98922134, 0.720333 , 0.25683194, 0.01939338, 0.02840332,
0.00946988, 0.0327204 ]),
array([0.99712298, 0.99278936, 0.99083163, 0.97328469, 0.98959809,
0.98922134, 0.720333 , 0.25683194, 0.01939338, 0.02840332,
0.00946988, 0.0327204 ])],
[array([0.9959042 , 0.9922607 , 0.99018862, 0.99265843, 0.98927447,
0.9900833 , 0.99403876, 0.00989025, 0.01120814, 0.01137717,
0.01152871, 0.01158725]),
array([0.9959042 , 0.9922607 , 0.99018862, 0.99265843, 0.98927447,
0.9900833 , 0.99403876, 0.00989025, 0.01120814, 0.01137717,
0.01152871, 0.01158725])],
[array([0.99590079, 0.99222193, 0.99016753, 0.99265045, 0.98927264,
0.99007179, 0.99407207, 0.00986684, 0.01125181, 0.01141439,
0.01150733, 0.01160243]),
array([0.99590079, 0.99222193, 0.99016753, 0.99265045, 0.98927264,
0.99007179, 0.99407207, 0.00986684, 0.01125181, 0.01141439,
0.01150733, 0.01160243])]],
'lowest_energy_batch': 2,
'lowest_energy_value': -115.1585667736213,
'solvation_free_energy': -0.007181981952470838,
'sci_solver_total_duration': 493.997501373291,
'metadata': {'resources_usage': {'RUNNING: MAPPING': {'CPU_TIME': 6.080063343048096},
'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU_TIME': 1.999896764755249},
'RUNNING: WAITING_FOR_QPU': {'CPU_TIME': 6.2850868701934814},
'RUNNING: EXECUTING_QPU': {'QPU_TIME': 21.639373540878296},
'RUNNING: POST_PROCESSING': {'CPU_TIME': 495.40831995010376}},
'num_iterations_executed': 3}}
Beachten Sie, dass die Ergebnis-Metadaten eine Zusammenfassung der Ressourcennutzung enthalten, anhand derer Sie die für die einzelnen Workloads erforderliche QPU- und CPU-Zeit besser einschätzen können (dieses Beispiel wurde auf einem Dummy-Gerät ausgeführt, so dass die tatsächlichen Ressourcennutzungszeiten abweichen können).
Nach Beendigung des Auftrags steht die gesamte Protokollierung zur Verfügung.
print(job.logs())Output:
2025-06-27 08:42:41,358 INFO job_manager.py:531 -- Runtime env is setting up.
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,015: Starting runtime service
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,621: Backend: ibm_sherbrooke
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:46,809: Initializing molecule object
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,599: Performing CCSD
Parsing /tmp/ray/session_2025-06-27_08-42-13_898146_1/runtime_resources/working_dir_files/_ray_pkg_4bc93dcc58c04b91/output_sqd_pcm/2025-06-27_08-42-45.fcidump.txt
Overwritten attributes get_ovlp get_hcore of <class 'pyscf.scf.hf_symm.SymAdaptedRHF'>
/usr/local/lib/python3.11/site-packages/pyscf/gto/mole.py:1293: UserWarning: Function mol.dumps drops attribute energy_nuc because it is not JSON-serializable
warnings.warn(msg)
/usr/local/lib/python3.11/site-packages/pyscf/gto/mole.py:1293: UserWarning: Function mol.dumps drops attribute intor_symmetric because it is not JSON-serializable
warnings.warn(msg)
converged SCF energy = -115.049680672847
E(CCSD) = -115.1519910037652 E_corr = -0.1023103309180226
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,694: Same spin orbital connections: [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10), (10, 11)]
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,694: Opposite spin orbital connections: [(0, 0), (4, 4), (8, 8)]
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,718: Optimization level: 2, ops: OrderedDict([('rz', 2438), ('sx', 1496), ('ecr', 766), ('x', 185), ('measure', 24), ('barrier', 1)]), depth: 391
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,736: Two-qubit gate depth: 94
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,737: Submitting sampler job
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:54,273: Job ID: d1f5j3lqbivc73ebqpj0
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:54,313: Job Status: QUEUED
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,813: Starting configuration recovery iteration 0
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,841: Batch 0 subspace dimension: 531441
2025-06-27 08:43:24,844 INFO worker.py:1588 -- Using address 172.17.16.124:6379 set in the environment variable RAY_ADDRESS
2025-06-27 08:43:24,847 INFO worker.py:1723 -- Connecting to existing Ray cluster at address: 172.17.16.124:6379...
2025-06-27 08:43:24,876 INFO worker.py:1908 -- Connected to Ray cluster. View the dashboard at [1m[32mhttp://172.17.16.124:8265 [39m[22m
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,945: Batch 1 subspace dimension: 519841
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,950: Batch 2 subspace dimension: 543169
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,955: Batch 3 subspace dimension: 532900
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,960: Batch 4 subspace dimension: 534361
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,964: Batch 5 subspace dimension: 531441
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,969: Batch 6 subspace dimension: 540225
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,974: Batch 7 subspace dimension: 524176
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,979: Batch 8 subspace dimension: 537289
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,983: Batch 9 subspace dimension: 540225
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,006: Lowest energy batch: 6
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Lowest energy value: -115.15470029849135
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Corresponding g_solv value: -0.0071927910374866375
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: -----------------------------------
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Starting configuration recovery iteration 1
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,564: Batch 0 subspace dimension: 413449
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,572: Batch 1 subspace dimension: 399424
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,578: Batch 2 subspace dimension: 438244
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,583: Batch 3 subspace dimension: 422500
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,589: Batch 4 subspace dimension: 409600
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,596: Batch 5 subspace dimension: 404496
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,601: Batch 6 subspace dimension: 410881
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,605: Batch 7 subspace dimension: 442225
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,611: Batch 8 subspace dimension: 409600
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,618: Batch 9 subspace dimension: 405769
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Lowest energy batch: 9
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Lowest energy value: -115.15862353596414
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Corresponding g_solv value: -0.0071800982859467006
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,918: -----------------------------------
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,918: Starting configuration recovery iteration 2
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,501: Batch 0 subspace dimension: 399424
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,508: Batch 1 subspace dimension: 412164
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,514: Batch 2 subspace dimension: 432964
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,519: Batch 3 subspace dimension: 400689
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,524: Batch 4 subspace dimension: 432964
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,529: Batch 5 subspace dimension: 418609
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,533: Batch 6 subspace dimension: 418609
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,538: Batch 7 subspace dimension: 425104
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,543: Batch 8 subspace dimension: 404496
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,548: Batch 9 subspace dimension: 429025
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,900: Lowest energy batch: 2
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,900: Lowest energy value: -115.1585667736213
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: Corresponding g_solv value: -0.007181981952470838
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: -----------------------------------
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: SCI_solver totally takes: 493.997501373291 seconds
Dieses Projekt zitieren
Wenn Sie die SQD-IEF-PCM-Vorlage in Ihrer Forschung verwenden, finden Sie detaillierte Angaben zur Zitierweise im Repository.
Nächste Schritte
- Folgen Sie der Anleitung „Berechnungen mit implizitem Lösungsmittel unter Verwendung von Qiskit Serverless “, um ein Beispiel für denselben Arbeitsablauf zu sehen
- Lesen Sie die Anleitung zum Erstellen einer Funktionsvorlage für die Hamilton-Simulation
- Sehen Sie sich die Quelldateien für diese Vorlage an GitHub
Referenzen
[1] Danil Kaliakin, Akhil Shajan, Fangchun Liang, and Kenneth M. Merz Jr. Implicit Solvent Sample-Based Quantum Diagonalization, The Journal of Physical Chemistry B, 2025, DOI: 10.1021/acs.jpcb.5c01030
[2] Javier Robledo-Moreno, et al, Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer, arXiv:2405.05068 [quant-ph].
[3] Jeffery Yu, et al, Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].
[4] Keita Kanno, et al, Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].
[5] Kenji Sugisaki, et al, Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, arXiv:2412.07218 [quant-ph].
[6] Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].
[7] Herbert, John M. Dielektrische Kontinuumsmethoden für die Quantenchemie. WIREs Computational Molecular Science, 2021, 11, 1759-0876.
[8] Saki, A. A.; Barison, S.; Fuller, B.; Garrison, J. R.; Glick, J. R.; Johnson, C.; Mezzacapo, A.; Robledo-Moreno, J.; Rossmannek, M.; Schweigert, P. et al. Qiskit addon: stichprobenbasierte Quantendiagonalisierung, 2024; https://github.com/Qiskit/qiskit-addon-sqd
[9] Asun, Q.; Zhang, X.; Banerjee, S.; Bao, P.; Barbry, M.; Blunt, N. S.; Bogdanow, N. A.; Booth, G. H.; Chen, J.; Cui, Z.-H. PySCF: Python -basierte Simulationen der chemischen Rahmenbedingungen, 2025; https://github.com/pyscf/pyscf
[10] Kevin J. Sung; et al., FFSIM: Schnellere Simulationen von fermionischen Quantenschaltungen, 2024. https://github.com/qiskit-community/ffsim