For icc and cholesky factorizations, MatSolve_SeqSBAIJ() is used for both aij and sbaij. Why it gives different flops?
Hong On Sun, Mar 26, 2017 at 2:44 PM, Bodhisatta Pramanik <[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.* > 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_ERR >> OR_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/d >> ocumentation/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 <(515)%20735-6300>* >
