PETSc is slowing down in C++? again
Barry Smith
bsmith at mcs.anl.gov
Mon Sep 7 11:38:20 CDT 2009
There must be something in your C++ classes that is not being
freed or your class destructors are not calling the appropriate
MatDestroy()s and KSPDestroy()s.
If you run a few cycles with -malloc_dump it will indicate what memory
(and where it was created) was not destroyed and you can track down
your problem.
Barry
On Sep 6, 2009, at 8:39 PM, xiaoyin ji wrote:
> Hi,
>
> I cannot include running options like -ksp_monitor in my program as
> it's not a simple petsc code. However, after testing the ksp examples
> I've found similar problem.
>
> Here is the code I'm testing src/ksp/ksp/examples/tutorials/ex2.c
>
> What I've done is add a loop of 10000 steps between MatCreate and
> MatDestory (right before PetscFinalize), and print the time for each
> loop. The time will increase exponentially just like my program.
> Moreover, if I narrow the loop so that only ksp create and destory are
> included, solving time does not change. -ksp_monitor option shows that
> ksp loop is running fine, however I cannot use this option with the
> time test as print out will change the loop time significantly.
>
> It seems to me that either MatDestory or VecDestory does not clear
> everything well in C++ codes( in Fortran codes they work well).
> Besides, instead of directly call petsc functions, I've also created a
> class which contains petsc mat and ksp utilities, and create/destroy
> the object of this class for each loop. However problem still exists.
>
> Best,
> Xiaoyin Ji
>
> On Thu, Sep 3, 2009 at 8:34 AM, xiaoyin ji<sapphire.jxy at gmail.com>
> wrote:
>> Hi,
>>
>> Here are the print outs
>>
>> for the very beginning, average time is about 0.8sec for the ksp
>> solver
>> KSP Object:
>> type: bicg
>> maximum iterations=10000, initial guess is zero
>> tolerances: relative=1e-07, absolute=1e-50, divergence=10000
>> left preconditioning
>> PC Object:
>> type: bjacobi
>> block Jacobi: number of blocks = 16
>> Local solve is same for all blocks, in the following KSP and PC
>> objects:
>> KSP Object:(sub_)
>> type: preonly
>> maximum iterations=10000, initial guess is zero
>> tolerances: relative=1e-05, absolute=1e-50, divergence=10000
>> left preconditioning
>> PC Object:(sub_)
>> type: ilu
>> ILU: 0 levels of fill
>> ILU: factor fill ratio allocated 1
>> ILU: tolerance for zero pivot 1e-12
>> ILU: using diagonal shift to prevent zero pivot
>> ILU: using diagonal shift on blocks to prevent zero pivot
>> out-of-place factorization
>> matrix ordering: natural
>> ILU: factor fill ratio needed 1
>> Factored matrix follows
>> Matrix Object:
>> type=seqaij, rows=5672, cols=5672
>> package used to perform factorization: petsc
>> total: nonzeros=39090, allocated nonzeros=39704
>> not using I-node routines
>> linear system matrix = precond matrix:
>> Matrix Object:
>> type=seqaij, rows=5672, cols=5672
>> total: nonzeros=39090, allocated nonzeros=39704
>> not using I-node routines
>> linear system matrix = precond matrix:
>> Matrix Object:
>> type=mpiaij, rows=90746, cols=90746
>> total: nonzeros=636378, allocated nonzeros=1279114
>> not using I-node (on process 0) routines
>> Norm of error 48.144, Iterations 137
>>
>> After 4000 steps, solver takes 7.5sec
>>
>> KSP Object:
>> type: bicg
>> maximum iterations=10000, initial guess is zero
>> tolerances: relative=1e-07, absolute=1e-50, divergence=10000
>> left preconditioning
>> PC Object:
>> type: bjacobi
>> block Jacobi: number of blocks = 16
>> Local solve is same for all blocks, in the following KSP and PC
>> objects:
>> KSP Object:(sub_)
>> type: preonly
>> maximum iterations=10000, initial guess is zero
>> tolerances: relative=1e-05, absolute=1e-50, divergence=10000
>> left preconditioning
>> PC Object:(sub_)
>> type: ilu
>> ILU: 0 levels of fill
>> ILU: factor fill ratio allocated 1
>> ILU: tolerance for zero pivot 1e-12
>> ILU: using diagonal shift to prevent zero pivot
>> ILU: using diagonal shift on blocks to prevent zero pivot
>> out-of-place factorization
>> matrix ordering: natural
>> ILU: factor fill ratio needed 1
>> Factored matrix follows
>> Matrix Object:
>> type=seqaij, rows=5672, cols=5672
>> package used to perform factorization: petsc
>> total: nonzeros=39090, allocated nonzeros=39704
>> not using I-node routines
>> linear system matrix = precond matrix:
>> Matrix Object:
>> type=seqaij, rows=5672, cols=5672
>> total: nonzeros=39090, allocated nonzeros=39704
>> not using I-node routines
>> linear system matrix = precond matrix:
>> Matrix Object:
>> type=mpiaij, rows=90746, cols=90746
>> total: nonzeros=636378, allocated nonzeros=1279114
>> not using I-node (on process 0) routines
>> Norm of error 48.7467, Iterations 132
>>
>>
>> The iterations are similar, solving time is actually increasing
>> exponentially, and the matrix should not be too complicated here as
>> the PETSc in Fortran solved this in 1sec.
>>
>> By the way, will there be a way to set a PETSc vector directly into a
>> preconditioner for the ksp solver?
>>
>> Thanks!
>>
>> Best,
>> Xiaoyin Ji
>>
>> Department of Materials Science and Engineering
>> North Carolina State University
>>
More information about the petsc-users
mailing list