Cusolver handle is recreated/destroyed each time
In the cusolver implementation of the Eigensolver (cdiaghg.f90:L318 with -D__USE_CUSOLVER on) the cusolver handle is created/destroyed every time, which is an expensive API call that often ends up taking more than the solver itself (see NVTX picture below). My understanding is that the matrix dimensions do not/rarely change between calls and so it would be possible to reuse the same handle (eg. by introducing the save attribute and remembering the last sizes). I think it is also done like this in the old custom solver implementation (Eigensolver_gpu).
Edited by Louis Stuber