Skip to main content
IBM Quantum Platform

Notas de versão da diagonalização quântica baseada em amostras (SQD)


0.13.0

Novos Recurso

  • Foi adicionado suporte para Python, 3.13 e Python, 3.14. Não foi necessário fazer alterações no código, portanto, espera-se que as versões mais antigas também funcionem em Python, 3.13 e 3.14.

  • qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() agora podem ser chamadas coletivamente a partir de todos os processos de uma execução multiprocessada (SPMD), por exemplo, no ambiente MPI. Quando invocado dessa forma, a etapa sci_solver é executada em todos os processos; assim, um algoritmo personalizado e distribuído sci_solver pode distribuir cada diagonalização entre os processos disponíveis; o restante do ciclo de recuperação da configuração é executado apenas no processo de controle, e o valor de retorno é o mesmo em todos os processos. O comportamento de um único processo permanece inalterado. Consulte “Suporte à aceleração multiprocesso e multithread” para obter detalhes sobre o suporte do pacote à aceleração multiprocesso e multithread.

Notas de descontinuação


0.12.1

Notas da Atualização

  • Python 3.10 é agora a versão mínima exigida. O suporte para Python 3.9 foi descontinuado.

0.12.0

Novos Recurso

Notas da Atualização

Notas de descontinuação

Correções de bugs


0.11.0

Novos Recurso

Notas da Atualização

Correções de bugs

  • Correção de uma conversão de tipo float para inteiro que afetava o módulo qubit

0.10.0

Notas da Atualização

Notas de descontinuação

  • O argumento avg_occupancies para qiskit_addon_sqd.configuration_recovery.recover_configurations() deve agora ser uma tupla do tipo length-2 contendo as ocupações de spin-up e spin-down, respectivamente.

    Formato antigo: array([occ_b_N, ..., occ_b_0, occ_a_N, ..., occ_a_0])

    Novo formato: tuple(array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N]))

Correções de bugs

  • Corrigimos um erro que fazia com que a produção de energia de qiskit_addon_sqd.fermion.solve_fermion() fosse incorreta quando a entrada se desvia spin_sq do spin^2 e da função de onda de saída.

0.9.0

Notas da Atualização

Correções de bugs

  • Corrigimos um erro de indexação que qiskit_addon_sqd.configuration_recovery() fazia com que os bits da metade direita da sequência de bits fossem invertidos em relação às ocupações dos orbitais associados à metade esquerda da sequência de bits.

  • o pyscf não é mais considerado uma dependência do Windows, onde ele não é instalado. No entanto, o Windows continua sendo uma plataforma sem suporte.


0.8.0

Novos Recurso

  • Foi adicionado suporte para Python 3.9.

  • Todas as funções que recebem um argumento rand_seed agora também aceitam uma instância numpy.random.Generator como rand_seed.

Notas da Atualização


0.7.0

Correções de bugs


0.6.0

Notas da Atualização

  • A especificação de addresses como argumento-chave para e qiskit_addon_sqd.fermion.solve_fermion() não qiskit_addon_sqd.fermion.optimize_orbitals() é mais suportada. Os usuários ainda podem passar addresses como primeiro argumento posicional; no entanto, esse uso está obsoleto. Recomenda-se que os usuários passem a matriz de sequências de bits que define o subespaço como os primeiros argumentos posicionais dessas funções, conforme mostrado a seguir.

    Para atualizar, altere este código

    # 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,
                              )

Notas de descontinuação

  • A função qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() foi considerada obsoleta e substituída por qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs(). Essas duas funções se comportam da mesma forma, com uma exceção importante: qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() retorna as configurações como tuple(spin_dn, spin_up); já que qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs() retorna as configurações como tuple(spin_up, spin_dn).

    para migrar

    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)
  • O argumento addresses para e qiskit_addon_sqd.fermion.solve_fermion() qiskit_addon_sqd.fermion.optimize_orbitals() foi descontinuado em favor de bitstring_matrix. Os usuários não precisam mais converter suas configurações em números inteiros; em vez disso, devem agora passar a matriz de sequência de bits que especifica o subespaço no qual se deve projetar e diagonalizar o hamiltoniano. A conversão dos determinantes para a representação inteira será feita internamente.

Correções de bugs

  • Corrigimos um bug que qiskit_addon_sqd.configuration_recovery.recover_configurations() , às vezes, causava um erro de divisão por zero ao calcular a probabilidade de inversão de bits individual.

  • Corrige um erro que fazia com que a recuperação da configuração falhasse em cadeias de bits de comprimento superior a 72.


0.5.0

Notas da Atualização

  • As funções qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample(), e agora qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() exigem que os argumentos hamming_left hamming_right e sejam especificados como argumentos-chave. Além disso, os argumentos n_batches samples_per_batch e da função qiskit_addon_sqd.subsampling.postselect_and_subsample() devem agora ser passados como argumentos-chave.

    Para atualizar

    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,
    )

    deve ser alterado para

    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

Prelúdio

Esta é uma versão secundária que introduz algumas pequenas, mas importantes, mudanças significativas na API. Essas alterações permitem um padrão mais consistente na especificação do número de elétrons alfa e beta nas funções químicas e não químicas da API.

Notas da Atualização

  • Os argumentos qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample(), e agora qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() recebem o argumento hamming_right posicional antes do hamming_left argumento, para se adequarem melhor ao restante do fluxo de trabalho.

    Para atualizar

    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,
    )

    deve ser alterado para

    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,
    )
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.