Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Singlet symmetry-reduced UCCSD #366

Closed
wants to merge 3 commits into from

Conversation

JamesB-1qbit
Copy link
Contributor

Utilizes symmetry to reduce the number of parameters for singlet UCCSD. Also generates the variables

param_dict. Maps the parameter indice to the corresponding spatial orbital excitation
param_dict[0] = (2, 0) means that parameter 1 is utilized for the single excitation (2^0 - 0^2) + (3 ^1 - 1^ 3) for example.

operator_dict maps the excitation to the FermionOperator.

params2keep is the list of parameters from the full packed_amplitudes that are kept in the optimization process. This could be modified by the user if some excitations are known to be small.

@JamesB-1qbit JamesB-1qbit changed the title Singlet Symmetry reduced uccsd Singlet symmetry-reduced UCCSD Dec 19, 2023
@ValentinS4t1qbit
Copy link
Collaborator

Do you see this feature as:

  • something that always builds UCCSD ensuring that the number of parameters are minimal (e.g identifying excitations that are mapped to the same parameter, therefore leading to a smaller optimization space that preserves those symmetries)
  • something enabling users to manually -enforce- that some excitations are ruled by the same parameter
  • both / something else ?

@alexfleury-sb
Copy link
Collaborator

alexfleury-sb commented Dec 28, 2023

@ValentinS4t1qbit I think the first point summarize it better, but there is more to it. The forbidden excitations have parameter set to 0 (they are ignored) if the orbital symmetry rule is not totally symmetric (A1).

Therefore the excitations on spin orbitals mapping to the same spatial orbitals are linearly dependant + we can remove excitations we know the parameter will be 0 even after optimization.

@ValentinS4t1qbit
Copy link
Collaborator

ValentinS4t1qbit commented Dec 28, 2023

@AlexandreF-1qbit Thank you, that sounds pretty rad. It's actually surprising we haven't implemented something like that a long time ago, since it's so fundamental and impactful for computational cost / convergence. My guess is that we were not using UCCSD much and were mostly working with small systems, which was not that time-consuming.

If we manage to reused cached circuits and the results of the qubit mappings, overall we may end up with a VQE-UCC bundle that can be an order of magnitude faster and more flexible.

@JamesB-1qbit I may need just a little help understanding the choice of mapping (2, 0) -> (2^0 - 0^2) + (3 ^1 - 1^ 3) sometime in the future

@alexfleury-sb
Copy link
Collaborator

alexfleury-sb commented Dec 28, 2023

I think it is something that was falling into "nice to have" but was not in line with our research roadmap. It is nice to have shorter UCC circuits, but they still scale badly with the system size (and those ideas can be applied to other ansatze as well).

I can try to answer the second one: FermionOperator in OpenFermion have indices that are alternating between alpha (even numbers) and beta (odd numbers) spin orbitals. The fermionic term i^ j - j^ i would be linked to (i+1)^ (j+1) - (j+1)^ (i+1).

@alexfleury-sb
Copy link
Collaborator

This work has been transferred to my repo at https://github.com/alexfleury-sb/Tangelo/tree/sym_uccsd.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants