-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
I'd like to have pretty thorough benchmarking for all of the propagators (as a Literate.jl
fiile that gets included in the documentation).
For each method, let's benchmark the (wallclock) runtime and memory usage for
- the "initialization" (creating the workspace, e.g.
ChebyWrk
) depending on the size of the Hilbert space - a single time step, depending on the size of the Hilbert space
- a single time step for a fixed size Hilbert space (>1000) depending on the sparsity of the Hamiltonian
- the propagation over a time grid for a fixed size Hilbert space (>1000), depending on the number of time steps
For the polynomial methods, in addition to wallclock runtime, we might also want "number matrix-vector products"
In each case, we'll want to look at both dense and sparse Hamiltonians:
- Use a random dense (Hermitian or non-Hermitian) matrix as the Hamiltonian
- Use a random sparse (Hermitian or non-Hermitian) matrix as the Hamiltonian, with several fixed "sparsity values"
- Use the Hamiltonian for two transmons with the cavity included as a "realistic" sparse Hamiltonian. Since we can choose where to truncate each transmon and the cavity, and random pulses should easily populate all levels, this is a good system for having "realistic" Hamiltonians of varying size
n * n * m
wheren
is the number of transmon levels andm
is the number of cavity levels.
There is no point in doing a dense Liouvillian: that's the same as propagating a dense Hamiltonian of the same size. So the different Liouvillians should always be sparse, but derive from the above dense/sparse Hamiltonians, and using Lindblad operators for spontaneous decay and dephasing from all levels with random decay rates.
Metadata
Metadata
Assignees
Labels
No labels