Skip to main content
IBM Quantum Platform

Probenbasierte Quantendiagonalisierung (SQD) Versionshinweise


0.13.0

Neue Funktionen

  • Es wurde Unterstützung für Python 3.13 sowie Python 3.14 hinzugefügt. Da keine Änderungen am Code erforderlich waren, sollten auch ältere Versionen auf Python, 3.13 und 3.14 funktionieren.

  • qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() können nun gemeinsam von allen Prozessen einer Multiprozess-Ausführung (SPMD) aufgerufen werden, beispielsweise unter MPI. Bei dieser Aufrufweise wird der Schritt sci_solver in jedem Prozess ausgeführt, sodass eine benutzerdefinierte, verteilte Lösung jede Diagonalisierung auf die verfügbaren Prozesse verteilen sci_solver kann; der Rest der Konfigurations- und Wiederherstellungsschleife läuft ausschließlich im Steuerprozess ab, und der Rückgabewert ist in jedem Prozess identisch. Das Verhalten bei einem einzelnen Prozess bleibt unverändert. Weitere Informationen zur Unterstützung von Multi-Prozess- und Multi-Thread-Beschleunigung durch das Paket finden Sie unter „Unterstützung für Multi-Prozess- und Multi-Thread-Beschleunigung“.

Hinweise zu veralteten Versionen


0.12.1

Anmerkungen zu Upgrades

  • Python 3.10 ist jetzt die erforderliche Mindestversion. Die Unterstützung für Python 3.9 wurde eingestellt.

0.12.0

Neue Funktionen

Anmerkungen zu Upgrades

Hinweise zu veralteten Versionen

Fehlerkorrekturen


0.11.0

Neue Funktionen

Anmerkungen zu Upgrades

Fehlerkorrekturen

  • Ein Fehler bei der Umwandlung von Float in Integer, der das Modul qubit betraf, wurde behoben

0.10.0

Anmerkungen zu Upgrades

Hinweise zu veralteten Versionen

  • Das Argument avg_occupancies für qiskit_addon_sqd.configuration_recovery.recover_configurations() sollte nun ein Tupel vom Typ „ length-2 “ sein, das die Besetzungsgrade bei „Spin-up“ bzw. „Spin-down“ enthält.

    Altes Format: array([occ_b_N, ..., occ_b_0, occ_a_N, ..., occ_a_0])

    Neues Format: tuple(array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N]))

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der dazu führte, qiskit_addon_sqd.fermion.solve_fermion() dass die Energieabgabe von falsch war, wenn die Eingangsgröße vom spin^2 us der Ausgangswellenfunktion abwich spin_sq .

0.9.0

Anmerkungen zu Upgrades

Fehlerkorrekturen

  • Es wurde ein Indizierungsfehler behoben, der qiskit_addon_sqd.configuration_recovery() dazu führte, dass Bits in der rechten Hälfte der Bitfolge im Verhältnis zu den Belegungen der Orbitalen, die der linken Hälfte der Bitfolge zugeordnet sind, vertauscht wurden.

  • pyscf wird nicht mehr als Abhängigkeit von Windows betrachtet, wo es nicht installiert werden kann. Windows bleibt jedoch eine nicht unterstützte Plattform.


0.8.0

Neue Funktionen

  • Unterstützung für Python 3.9 hinzugefügt.

  • Alle Funktionen, die ein rand_seed Argument annehmen, akzeptieren nun auch eine numpy.random.Generator Instanz als rand_seed.

Anmerkungen zu Upgrades


0.7.0

Fehlerkorrekturen


0.6.0

Anmerkungen zu Upgrades

  • Die Angabe von addresses als Schlüsselwortargument für qiskit_addon_sqd.fermion.solve_fermion() und qiskit_addon_sqd.fermion.optimize_orbitals() wird nicht mehr unterstützt. Benutzer können weiterhin addresses als erstes Positionsargument übergeben; diese Verwendung ist jedoch veraltet. Den Benutzern wird empfohlen, die den Unterraum definierende Bitstring-Matrix als erste Positionsargumente an diese Funktionen zu übergeben, wie unten gezeigt.

    Zum Aktualisieren ändern Sie diesen Code

    # DEPRECATED CODE
    from qiskit_addon_sqd.fermion import (
        bitstring_matrix_to_sorted_addresses,
        solve_fermion,
        optimize_orbitals,
    )
    
    bitstring_matrix = ...
    addresses = bitstring_matrix_to_sorted_addresses(bitstring_matrix, open_shell=open_shell)
    energy, coeffs, occs, spin = solve_fermion(
                                     addresses=addresses,
                                     hcore=hcore,
                                     eri=eri,
                                 )
    ...
    e_oo, rotation, occs_oo = optimize_orbitals(
                                  addresses=addresses,
                                  hcore=hcore,
                                  eri=eri,
                              )
    
    ### SHOULD BECOME ###
    
    # NEW CODE
    from qiskit_addon_sqd.fermion import solve_fermion, optimize_orbitals
    
    bitstring_matrix = ...
    energy, coeffs, occs, spin = solve_fermion(
                                     bitstring_matrix,
                                     hcore=hcore,
                                     eri=eri,
                                 )
    ...
    e_oo, rotation, occs_oo = optimize_orbitals(
                                  bitstring_matrix,
                                  hcore=hcore,
                                  eri=eri,
                              )

Hinweise zu veralteten Versionen

  • Die Funktion qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() wurde zugunsten von … als veraltet markiert qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs(). Diese beiden Funktionen verhalten sich identisch, mit einer entscheidenden Ausnahme: qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() gibt die Konfigurationen als zurück tuple(spin_dn, spin_up), während die Konfigurationen als zurückgibt qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs()tuple(spin_up, spin_dn) .

    zur Migration

    from qiskit_addon_sqd.fermion import (
        bitstring_matrix_to_sorted_addresses,
        bitstring_matrix_to_ci_strs,
    )
    
    # DEPRECATED CODE
    bs_matrix = ...
    addr_dn, addr_up = bitstring_matrix_to_sorted_addresses(bs_matrix, open_shell=True)
    
    ### SHOULD BECOME ###
    
    # NEW CODE
    bs_matrix = ...
    ci_strs_up, ci_strs_dn = bitstring_matrix_to_ci_strs(bs_matrix, open_shell=True)
  • Das Argument addresses für und qiskit_addon_sqd.fermion.solve_fermion() qiskit_addon_sqd.fermion.optimize_orbitals() wird zugunsten von nicht mehr empfohlen bitstring_matrix. Die Benutzer müssen ihre Konfigurationen nicht mehr in Ganzzahlen umwandeln; stattdessen sollten sie nun die Bitstring-Matrix übergeben, die den Unterraum angibt, auf den der Hamilton-Operator projiziert und diagonalisiert werden soll. Die Umwandlung in die ganzzahlige Darstellung von Determinanten erfolgt intern.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der qiskit_addon_sqd.configuration_recovery.recover_configurations() bei der Berechnung der Wahrscheinlichkeit eines einzelnen Bit-Flips gelegentlich zu einem Division-durch-Null-Fehler führte.

  • Behebt einen Fehler, der dazu führte, dass die Wiederherstellung der Konfiguration bei Bitstrings mit einer Länge von mehr als 72 fehlschlug.


0.5.0

Anmerkungen zu Upgrades

  • Die Funktionen qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample(), und erfordern nun qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() , dass die Argumente hamming_left hamming_right und als Schlüsselwortargumente angegeben werden. Außerdem qiskit_addon_sqd.subsampling.postselect_and_subsample() sollten die Argumente n_batches und samples_per_batch an nun als Schlüsselwortargumente übergeben werden.

    Zum Upgrade

    from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight
    from qiskit_addon_sqd.subsampling import postselect_and_subsample
    from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming
    
    counts = generate_counts_bipartite_hamming(num_samples, num_bits, num_elec_a, num_elec_b)
    
    ...
    
    bs_mat = post_select_by_hamming_weight(bs_mat_full, num_elec_a, num_elec_b)    
    
    ...
    
    batches = postselect_and_subsample(
        bs_mat,
        probs_arr,
        num_elec_a,
        num_elec_b,
        samples_per_batch,
        num_batches,
    )

    sollte geändert werden in

    from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight
    from qiskit_addon_sqd.subsampling import postselect_and_subsample
    from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming
    
    counts = generate_counts_bipartite_hamming(num_samples, num_bits, hamming_right=num_elec_a, hamming_left=num_elec_b)
    
    ...
    
    bs_mat = post_select_by_hamming_weight(bs_mat_full, hamming_right=num_elec_a, hamming_left=num_elec_b)
    
    ...
    
    batches = postselect_and_subsample(
        bs_mat,
        probs_arr,
        hamming_right=num_elec_a,
        hamming_left=num_elec_b,
        samples_per_batch=samples_per_batch,
        num_batches=num_batches,
    )

0.4.0

Vorspiel

Dies ist eine kleinere Version, die ein paar kleine, aber wichtige Änderungen an der API einführt. Diese Änderungen ermöglichen ein konsistenteres Muster bei der Angabe der Anzahl von Alpha- und Beta-Elektronen sowohl in den chemischen als auch in den nicht-chemischen Funktionen der API.

Anmerkungen zu Upgrades

  • Die Funktionen qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample(), und nehmen nun qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() das hamming_right Positionsargument vor dem hamming_left Argument auf, um sich besser an den restlichen Arbeitsablauf anzupassen.

    Zum Upgrade

    from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight
    from qiskit_addon_sqd.subsampling import postselect_and_subsample
    from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming
    
    counts = generate_counts_bipartite_hamming(num_samples, num_bits, num_elec_b, num_elec_a)
    
    ...
    
    bs_mat = post_select_by_hamming_weight(bs_mat_full, num_elec_b, num_elec_a)    
    
    ...
    
    batches = postselect_and_subsample(
        bs_mat,
        probs_arr,
        num_elec_b,
        num_elec_a,
        samples_per_batch,
        n_batches,
    )

    sollte geändert werden in

    from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight
    from qiskit_addon_sqd.subsampling import postselect_and_subsample
    from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming
    
    counts = generate_counts_bipartite_hamming(num_samples, num_bits, num_elec_a, num_elec_b)
    
    bs_mat = post_select_by_hamming_weight(bs_mat_full, num_elec_a, num_elec_b)
    
    ...
    
    batches = postselect_and_subsample(
        bs_mat,
        probs_arr,
        num_elec_a,
        num_elec_b,
        samples_per_batch,
        n_batches,
    )
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.