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

[Benchmark]: Exponential derivatives improvement #143

Open
2 of 14 tasks
andgoldschmidt opened this issue Aug 14, 2024 · 0 comments
Open
2 of 14 tasks

[Benchmark]: Exponential derivatives improvement #143

andgoldschmidt opened this issue Aug 14, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@andgoldschmidt
Copy link
Member

andgoldschmidt commented Aug 14, 2024

Feature Description

Background

Often, we rely on automatic differentiation support of the matrix exponential. We currenly rely on expv from ExponentialAction.jl to accomplish this. This might be appropriate---especially because we usually have Jacobian-vector products---but it would be good to benchmark. In particular, see this issue thread and the following comparison.
JuliaDiff/ForwardDiff.jl#174 (comment)
In that thread, there is also a reference to a paper, which---see Thm 2---computes the Jacobian of the matrix exponential using the eigendecomposition. This has some similarity to hermitian_exp(...) in exponential_integrators.jl, and might be a practical way to implement the derivative.

Places where we use an exponential integrator include:

See also:
https://docs.sciml.ai/ExponentialUtilities/stable/matrix_exponentials/

Suggested checklist

For integrators.jl

  • Implement various SciML matrix exponential derivative via ForwardDiff.jl, following the reference issue comment.
  • Implement the analytic matrix exponential derivative using the eigendecomposition. Refactor so that the eigendecomposition is only computed once.
  • Copy/Paste code and duplicate integrators using the new SciML and Analytic solutions. Benchmark Jacobian on some named trajectory objects.

For rollouts.jl

  • Implement the SciML matrix exponential derivative with a function signature that matches exp.
  • Test that rollouts are still differentiable with ForwardDiff (there should be an existing test for this).

Importance

1 (lowest)

What does this feature affect?

  • quantum system construction
  • problem setup
  • problem solution
  • problem performance
  • solution analysis
  • plotting
  • documentation
  • tests
  • other (please specify below)

Other information

No response

@andgoldschmidt andgoldschmidt added enhancement New feature or request good first issue Good for newcomers qnumerics Issue for qnumerics hackathon and removed qnumerics Issue for qnumerics hackathon labels Aug 14, 2024
@andgoldschmidt andgoldschmidt removed the good first issue Good for newcomers label Aug 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant