*The flop rate for the MatMult and MatSolve are much lower than I would
expect. Try using the AIJ matrix instead of SBAIJ.*
SeqAIJ:
      MatMult = 213 Mflop/s
      MatSolve = 204 Mflop/s
AIJ:
      MatMult = 211 Mflop/s
      MatSolve = 198 Mflop/s
SBAIJ:
     MatMult = 179 Mflop/s
     MatSolve = 167 Mflop/s

Shouldn't the SBAIJ provide the best performance since it only works with
the upper triangular part of the whole large sparse symmetric matrix?

Thanks,
Bodhi

On Sun, Mar 26, 2017 at 12:30 PM, Barry Smith <[email protected]> wrote:

>
>    The flop rate for the MatMult and MatSolve are much lower than I would
> expect. Try using the AIJ matrix instead of SBAIJ.
>
>
> > On Mar 26, 2017, at 6:25 AM, Bodhisatta Pramanik <[email protected]>
> wrote:
> >
> > *First set a new PETSC_ARCH say arch-opt and ./configure with the
> additional argument --with-debugging=0 then recompile PETSc with the new
> PETSC_ARCH and recompile your code then send the new -log_view output.*
> >    I have attached the new log summary with this file. The computation
> time is a lot faster now. It takes around 23 seconds to compute the first 3
> eigenvectors of a 200K sized matrix.
> >
> > Thanks,
> > Bodhi
> >
> > On Sun, Mar 26, 2017 at 3:14 AM, Bodhisatta Pramanik <
> [email protected]> wrote:
> > *The error is in EPSComputeError(), not in EPSSolve(). Did you modify
> the state of the EPS object between EPSSolve() and EPSComputeError()?*
> >
> > I am not modifying the eps object. I have copied a part of the code
> where I am computing the eigenvectors.
> >
> >         EPSCreate(PETSC_COMM_WORLD,&eps);
> >         EPSSetOperators(eps,m.Lpl,NULL);
> >         EPSSetProblemType(eps,EPS_HEP);
> >         EPSSetFromOptions(eps);
> >
> >         EPSSolve(eps);  //Solving for the eigenvalues
> >
> >         EPSGetIterationNumber(eps,&its);
> >         PetscPrintf(PETSC_COMM_WORLD,"Number of iterations of the
> method: %D\n",its);
> >         EPSGetType(eps,&type);
> >         PetscPrintf(PETSC_COMM_WORLD,"Solution Method: %s\n\n",type);
> >         EPSGetTolerances(eps,&get_tol,&maxit);
> >         PetscPrintf(PETSC_COMM_WORLD,"Stopping condition: tol=%.4g,
> maxit=%D\n",(double)get_tol,maxit);
> >         EPSGetConverged(eps,&nconv);
> >         PetscPrintf(PETSC_COMM_WORLD, "Number of converged eigenpairs:
> %D\n\n",nconv);
> >         if(nconv>0)
> >         {
> >                 PetscPrintf(PETSC_COMM_WORLD,
> >                         "       k       ||Ax-kx||/||kx||\n"
> >                         "-------------- ----------------\n");
> >                 for(i=0;i<nconv;i++)
> >                 {
> >                         EPSGetEigenpair(eps,i,&kr,&ki,xr,xi);
> >                         EPSComputeError(eps,i,EPS_
> ERROR_RELATIVE,&error);
> >                         re = PetscRealPart(kr);
> >                         im = PetscImaginaryPart(kr);
> >
> >                         re = kr;
> >                         im = ki;
> >                         if(im!=0.0) {
> >                                 PetscPrintf(PETSC_COMM_WORLD," %9f%+9fi
> %12g\n",(double)re,(double)im,(double)error);
> >                         }
> >                         else {
> >                                 PetscPrintf(PETSC_COMM_WORLD,"     %12f
>   %12g\n",(double)re,(double)error);
> >                         }
> >                 }
> >                 PetscPrintf(PETSC_COMM_WORLD,"\n");
> >         }
> >
> >         EPSDestroy(&eps);
> >         VecDestroy(&xr);
> >         VecDestroy(&xi);
> > }
> >
> > This is what I pass through my command line:
> > ./RunPart -eps_type jd -eps_nev 3 -st_ksp_type cg -st_ksp_rtol 0.001
> -eps_tol 0.001 -st_pc_type bjacobi -eps_smallest_real
> >
> >
> > *In graph partitioning, I would strongly recommend deflating the
> eigenvector corresponding to the zero eigenvalue, as is done in ex11.c:*
> >         I have tried doing this but for some reason the eigenvalues fail
> to converge.
> >
> >
> >
> > On Sun, Mar 26, 2017 at 2:41 AM, Jose E. Roman <[email protected]>
> wrote:
> >
> > > El 26 mar 2017, a las 6:08, Bodhisatta Pramanik <[email protected]>
> escribió:
> > >
> > > Send all the output in the error message:
> > >
> > > [0]PETSC ERROR: --------------------- Error Message
> --------------------------------------------------------------
> > > [0]PETSC ERROR: Object is in wrong state
> > > [0]PETSC ERROR: Must call EPSSolve() first: Parameter #1
> > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/
> documentation/faq.html for trouble shooting.
> > > [0]PETSC ERROR: Petsc Release Version 3.7.5, Jan, 01, 2017
> > > [0]PETSC ERROR: ./RunPart on a arch-linux2-c-debug named
> research-5.ece.iastate.edu by bodhi91 Sat Mar 25 22:33:56 2017
> > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-css=g++
> -with-fc=gfortran --download-fblaslapack --download-mpich
> > > [0]PETSC ERROR: #10468 EPSComputeError() line 643 in
> /tmp/Bodhi/slepc-3.7.3/src/eps/interface/epssolve.c
> > >          0.000000     2.0795e-317
> > >
> >
> > The error is in EPSComputeError(), not in EPSSolve(). Did you modify the
> state of the EPS object between EPSSolve() and EPSComputeError()?
> >
> > In graph partitioning, I would strongly recommend deflating the
> eigenvector corresponding to the zero eigenvalue, as is done in ex11.c:
> > http://slepc.upv.es/documentation/current/src/eps/
> examples/tutorials/ex11.c.html
> >
> > Jose
> >
> >
> >
> >
> > --
> > Bodhisatta Pramanik,
> > Graduate Student,
> > Department of Electrical and Computer Engineering,
> > 301 Durham,
> > Iowa State University,
> > Ames,Iowa 50011,
> > [email protected]
> > 515-735-6300
> >
> >
> >
> > --
> > Bodhisatta Pramanik,
> > Graduate Student,
> > Department of Electrical and Computer Engineering,
> > 301 Durham,
> > Iowa State University,
> > Ames,Iowa 50011,
> > [email protected]
> > 515-735-6300
> > <New Log Summary>
>
>


-- 
*Bodhisatta Pramanik,*
*Graduate Student,*
*Department of Electrical and Computer Engineering,*
*301 Durham,*
*Iowa State University,*
*Ames,Iowa 50011,*
[email protected]
*515-735-6300*

Reply via email to