Ok then use -log_summary and put the first solve in a separate stage (see 
PetscStageRegister()) and send the results of a run back demonstrating the slow 
first solver and we may be able to see what the story is.

   Barry

On Jan 28, 2014, at 5:23 PM, David Liu <[email protected]> wrote:

> wow that is news to me. I always assumed that this is normal.
> 
> I'm pretty certain it's not the preallocation. I'm using MatCreateMPI, and to 
> my knowledge I wouldn't even be able to set the values without crashing if I 
> didn't preallocate. (If I'm not mistaken, the setting values slowly without 
> preallocating is only possible if you create the Mat using MatCreate + 
> MatSetup).
> 
> Also, I'm certain that the time is taken on the first solve, not the setting 
> of values, because I use the matrix in a MatMult first to get the RHS before 
> solving, and the MatMult happens before the long first solve. 
> 
> 
> On Tue, Jan 28, 2014 at 5:04 PM, Barry Smith <[email protected]> wrote:
> 
> On Jan 28, 2014, at 1:36 PM, David Liu <[email protected]> wrote:
> 
> > Hi, I'm writing an application that solves a sparse matrix many times using 
> > Pastix. I notice that the first solves takes a very long time,
> 
>   Is it the first “solve” or the first time you put values into that matrix 
> that “takes a long time”? If you are not properly preallocating the matrix 
> then the initial setting of values will be slow and waste memory.  See 
> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatXAIJSetPreallocation.html
> 
>   The symbolic factorization is usually much faster than a numeric 
> factorization so that is not the cause of the slow “first solve”.
> 
>    Barry
> 
> 
> 
> > while the subsequent solves are very fast. I don't fully understand what's 
> > going on behind the curtains, but I'm guessing it's because the very first 
> > solve has to read in the non-zero structure for the LU factorization, while 
> > the subsequent solves are faster because the nonzero structure doesn't 
> > change.
> >
> > My question is, is there any way to save the information obtained from the 
> > very first solve, so that the next time I run the application, the very 
> > first solve can be fast too (provided that I still have the same nonzero 
> > structure)?
> 
> 

Reply via email to