Open jebej opened 5 years ago
The issue is with aupd_wrapper
in Arpack
which allocates the required dense arrays on the main memory.
I'm not sure what would be the best solution in order to allocate on the GPU memory instead. Julia has interfaces to allow matching the type of the element of an array, but not the type of memory.
The bigger issue is that a dense vector is needed by Arpack for updates, requiring a copy every iteration. Oh well...
use KrylovKit maybe
The output vectors of the matmuls have to be stored in CPU memory when using ARPACK. I suspect using https://github.com/haampie/ArnoldiMethod.jl would be the way to proceed here. It might not work yet with GPUs but it should be possible to make it work since it's completely written in Julia.
I'm trying to diagonalize a sparse CuArrays with
eigs
, which currently fails because it dispatches to the general matrix*vector multiplication. What would be needed to get it to work?Is it only a question of defining the correct
mul!
method?