Very large sparse eigensolves

Open discussion for MAGMA library (Matrix Algebra on GPU and Multicore Architectures)
Post Reply
levineds
Posts: 2
Joined: Sat Feb 22, 2020 4:08 am

Very large sparse eigensolves

Post by levineds » Sat Feb 22, 2020 4:17 am

The problem I am working on requires solving for the smallest (algebraic) eigenvalues (they are negative numbers) and eigenvectors of very large symmetric, sparse matrices (larger than 5 million x 5 million, sparsity <0.005%). I have been shopping around a variety of packages looking for one that can reliably perform these calculations, particularly utilizing some parallelism to accelerate the eigensolve. Is MAGMA suitable for sparse, symmetric eigensolves on matrices this large (preferably order 10s of millions, though quite sparse)? If so, can you point me to a simple example of such code. I have the non-zero entries in the form (i, j, value) and just need a "simple" real, symmetric eigensolve.

Stan Tomov
Posts: 279
Joined: Fri Aug 21, 2009 10:39 pm

Re: Very large sparse eigensolves

Post by Stan Tomov » Tue Feb 25, 2020 12:13 pm

Looks like you need about 15 GB just for the matrix. You could use MAGMA and 32GB GPU to solve such problems. MAGMA implements the LOBPCG method, but that has to be adjusted for your problem - the matrix has to be definite and you would look for the smallest (or largest) eigenstates. One way is folded spectrum method where instead of solving directly an eigenproblem for a matrix H, you solve for the smallest eigenstates of (H - \alpha I)^2 and recover the ones that you need from there. \alpha should be smaller that the smallest eigenvalue. Is something like this that you have used so far?

levineds
Posts: 2
Joined: Sat Feb 22, 2020 4:08 am

Re: Very large sparse eigensolves

Post by levineds » Fri Feb 28, 2020 11:39 pm

I haven't used anything like that so far. I've had the most success so far with Eigen/Spectra, but we are running into real bottlenecks due to its serial implementation. Also I lost an order of magnitude on the sparsity, it's <0.0005%. Why do you need to square the matrix, why can't you just level-shift the whole thing and call it good?

Post Reply