I have a MatShell object that computes matrix-vector products of a dense symmetric matrix of size NxN. The MatShell does not actually form the dense matrix, so it is never in memory/storage. For my application, N ranges from 1e4 to 1e5.
I want to compute the full spectrum of this matrix. For an example with N ~1e4, I was able to use SLEPc's Krylov-Schur solver to get the spectrum in about 3 hours running on 6 A100 GPUs. There, I had set the MPD to 2000. Before moving on to larger matrices, I wanted to check whether this is the best way to go about it. I saw on other posts that for computing full spectra of dense matrices, it is generally better to go with LAPACK/SCALAPACK. Is the same true for MatShells of dense matrices? The matrix-vector products with the shell themselves are really cheap, so I can form the dense matrix with MatComputeOperator() and store it to later compute with another solver if needed. If SLEPc is not a bad option, what is a good way to select MPD/NCV? I do need the full spectrum here since I am trying to analyze how the spectral decay changes for different problem configurations. Thanks for your help, Sreeram
