I'm new to scalapack library and have a few stupid questions for using them.
1. I need to solve one large sparse, symmetric linear system, but the matrix isn't banded nor tridiagonal,
then, which subroutine offiers better performance? p?gesv or p?posv ?
2. As the global matrix need to be distributed over the processes, then how do I know whether the processes
are in a 1d or 2d grid? and which part of the global matrix need to be distributed to which process?
Before using mkl_scalapack, my code is already parallel (using MPI), I'm not sure whether this will affect the process management
of the mkl_scalapack subroutines?
Thanks very much!
How does the sparse matrix stored in the code: is it in some sparse format ( for example, BSR, CSR, or others), or is it just in the dense format? Both p?gesv and p?posv are for the dense matrix. MKL have sparse solver for the single node, no cluster version of sparse solver.
For dense matrix usage on Scalapck, there are a few examples, there sample code may help to get started: