[SLEPc] Computing Smallest Eigenvalue+Eigenvector of Many Small Matrices
Hello PETSc/SLEPc users, Similar to a recent question I am looking for an algorithm to compute the smallest eigenvalue and eigenvector for a bunch of matrices however I have a few extra “restrictions”. All matrices have the following properties: - All matrices are the same size - All matrices are small (perhaps no larger than 12x12) - All matrices are SPD - I only need the smallest eigenpair So far my best bet seems to be Lanczos but I’m wondering if there is some wunder method I’ve overlooked. Best regards, Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
Have you tried just calling LAPACK directly? (You could try dsyevx to see if there's something to gain by computing less than all the eigenvalues.) I'm not aware of a batched interface at this time, but that's what you'd want for performance. Jacob Faibussowitsch <[email protected]> writes:
Hello PETSc/SLEPc users,
Similar to a recent question I am looking for an algorithm to compute the smallest eigenvalue and eigenvector for a bunch of matrices however I have a few extra “restrictions”. All matrices have the following properties:
- All matrices are the same size - All matrices are small (perhaps no larger than 12x12) - All matrices are SPD - I only need the smallest eigenpair
So far my best bet seems to be Lanczos but I’m wondering if there is some wunder method I’ve overlooked.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
cuSolver has syevjBatched, which seems to fit your purpose. But I have never used it. Lanczos is not competitive for such small matrices. Jose
El 6 jul 2021, a las 21:56, Jed Brown <[email protected]> escribió:
Have you tried just calling LAPACK directly? (You could try dsyevx to see if there's something to gain by computing less than all the eigenvalues.) I'm not aware of a batched interface at this time, but that's what you'd want for performance.
Jacob Faibussowitsch <[email protected]> writes:
Hello PETSc/SLEPc users,
Similar to a recent question I am looking for an algorithm to compute the smallest eigenvalue and eigenvector for a bunch of matrices however I have a few extra “restrictions”. All matrices have the following properties:
- All matrices are the same size - All matrices are small (perhaps no larger than 12x12) - All matrices are SPD - I only need the smallest eigenpair
So far my best bet seems to be Lanczos but I’m wondering if there is some wunder method I’ve overlooked.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
syevjBatched from cuSolver is quite good once it's configured fine. It's a direct solve for all eigenpairs, works for batches of small matrices with sizes up to (I believe) 32x32. The default CUDA example using it works except if you have "too many" small matrices, in which case you'll overload the GPU memory and need to further batch the calls. I found it to be fast enough for my needs. Regards, *Adam Denchfield* *Ph.D Student, Physics* University of Illinois in Chicago B.S. Applied Physics (2018) Illinois Institute of Technology Email: [email protected] On Wed, Jul 7, 2021 at 2:31 AM Jose E. Roman <[email protected]> wrote:
cuSolver has syevjBatched, which seems to fit your purpose. But I have never used it.
Lanczos is not competitive for such small matrices.
Jose
El 6 jul 2021, a las 21:56, Jed Brown <[email protected]> escribió:
Have you tried just calling LAPACK directly? (You could try dsyevx to see if there's something to gain by computing less than all the eigenvalues.) I'm not aware of a batched interface at this time, but that's what you'd want for performance.
Jacob Faibussowitsch <[email protected]> writes:
Hello PETSc/SLEPc users,
Similar to a recent question I am looking for an algorithm to compute the smallest eigenvalue and eigenvector for a bunch of matrices however I have a few extra “restrictions”. All matrices have the following properties:
- All matrices are the same size - All matrices are small (perhaps no larger than 12x12) - All matrices are SPD - I only need the smallest eigenpair
So far my best bet seems to be Lanczos but I’m wondering if there is some wunder method I’ve overlooked.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
Hi All, Thanks for the suggestions, I will look into dsyevx. Unfortunately cuSolver might be out of the question since I actually need to compute these eigenvalues within a device kernel, although it might be worthwhile to compute the eigenvalues with cusolver as a pre-processing step to my own kernel. Best regards, Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
On Jul 7, 2021, at 14:13, Adam Denchfield <[email protected]> wrote:
syevjBatched from cuSolver is quite good once it's configured fine. It's a direct solve for all eigenpairs, works for batches of small matrices with sizes up to (I believe) 32x32. The default CUDA example using it works except if you have "too many" small matrices, in which case you'll overload the GPU memory and need to further batch the calls. I found it to be fast enough for my needs.
Regards, Adam Denchfield Ph.D Student, Physics University of Illinois in Chicago B.S. Applied Physics (2018) Illinois Institute of Technology Email: [email protected] <mailto:[email protected]>
On Wed, Jul 7, 2021 at 2:31 AM Jose E. Roman <[email protected] <mailto:[email protected]>> wrote: cuSolver has syevjBatched, which seems to fit your purpose. But I have never used it.
Lanczos is not competitive for such small matrices.
Jose
El 6 jul 2021, a las 21:56, Jed Brown <[email protected] <mailto:[email protected]>> escribió:
Have you tried just calling LAPACK directly? (You could try dsyevx to see if there's something to gain by computing less than all the eigenvalues.) I'm not aware of a batched interface at this time, but that's what you'd want for performance.
Jacob Faibussowitsch <[email protected] <mailto:[email protected]>> writes:
Hello PETSc/SLEPc users,
Similar to a recent question I am looking for an algorithm to compute the smallest eigenvalue and eigenvector for a bunch of matrices however I have a few extra “restrictions”. All matrices have the following properties:
- All matrices are the same size - All matrices are small (perhaps no larger than 12x12) - All matrices are SPD - I only need the smallest eigenpair
So far my best bet seems to be Lanczos but I’m wondering if there is some wunder method I’ve overlooked.
Best regards,
Jacob Faibussowitsch (Jacob Fai - booss - oh - vitch)
participants (4)
-
Adam Denchfield -
Jacob Faibussowitsch -
Jed Brown -
Jose E. Roman