[petsc-users] Slepc: Computing first 4 smallest eigenvalues and eigenvectors of a large graph Laplacian

Bodhisatta Pramanik bodhi91 at iastate.edu
Sat Mar 25 22:48:01 CDT 2017


Try     -st_pc_type gamg:

Doing this with the existing eigensolver,linear solver : ./RunPart
-eps_type jd -eps_nev 3 -st_ksp_type cg -st_ksp_rtol 0.001 -eps_tol 0.001
-st_pc_type gamg -eps_smallest_real        results in the following issues:-
PETSC ERROR: Object is in wrong state
PETSC ERROR: Must call EPSSolve() first: Parameter #1

Try -st_pc_type sor

Doing this again with the existing eigensolver,linear solver returns me the
eigenvalues but it takes more time. (106 seconds) for a Laplacian matrix of
200K size. The bjacobi was giving me the same eigenvalues but in 60
seconds.


Run with -log_view to see where the computation is taking the most time:

EPSSolve and KSPSolve take the most time to finish computation.

Since the matrix is symmetric are you using the sbaij format instead of AIJ?

I am using the sbaij format but with block size 1. I guess that is
equivalent to the AIJ format itself.


Thanks,
Bodhi




On Sat, Mar 25, 2017 at 10:22 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
> > On Mar 25, 2017, at 8:52 PM, Bodhisatta Pramanik <bodhi91 at iastate.edu>
> wrote:
> >
> > Hi,
> >
> > I apologize for the slepc question. I could not find any user lists so
> I'm hoping someone on here might be able to offer some guidance.
> >
> > Problem Definition:
> > I am working on a graph partitioning problem. I have the laplacian of a
> large graph(500,000 nodes) and am interested in extracting its global
> information in order to find good partitioning. An approach is to compute
> the first few(4-5) eigenvalues and use that information to formulate the
> partition algorithm.
> >
> > I am leveraging the EPS solvers of the Slepc library. It appears that
> the Jacobi-davidson eigen solver gives me the eigenvalues in the shortest
> period of time compared to others (Krylov-Schur, Rayleigh quotient,
> Lanczos, etc). I use this eigensolver with the conjugate gradient linear
> solver and the block-jacobi preconditioner. So this is what I am basically
> passing through the command line:
> >
> > ./RunPart -eps_type jd -eps_nev 4 -st_ksp_type cg -st_ksp_rtol 0.001
> -eps_tol 0.001 -st_pc_type bjacobi -eps_smallest_real
>
>   Try     -st_pc_type gamg
>
>    One one process default bjacobi results in ILU which is not a great
> preconditioner.
>
>   Also try -st_pc_type sor
>
> >
> > Question:
> > The time it takes to compute the first 4-5 eigenvectors of a matrix of
> size (200k) is near about 60 seconds. CPU config: Intel Xeon 2GHz. I am
> using a single processor to run my code. Is there any way I can gain major
> speedup than what I am getting?
>
>   Run with -log_view to see where the computation is taking the most time.
>
> >
> > Is it possible to obtain the eigenvalues inside 10-15 seconds of such
> huge matrices even if I do not use multiple processor??
> >
> > Can someone provide me with some valuable guidance??
>
>    Since the matrix is symmetric are you using the sbaij format instead of
> AIJ?
>
> >
> > Thanks,
> > Bodhi
>
>


-- 
*Bodhisatta Pramanik,*
*Graduate Student,*
*Department of Electrical and Computer Engineering,*
*301 Durham,*
*Iowa State University,*
*Ames,Iowa 50011,*
bodhi91 at iastate.edu
*515-735-6300*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170325/8bb70ed3/attachment.html>


More information about the petsc-users mailing list