Sorry, I've found my problem.
I've been repeatedly doing KSPCreate()...

All is good now.
Regards
Juntao

On Nov 5 2020, at 2:32 pm, Karl Yang <[email protected]> wrote:
> Hi, I have a solver for time dependent problem and in each forward time step, 
> I do
>
> // after update values in Amat and Pmat / /
> KSPSetOperators(ksp, Amat, Pmat)
> KSPSolve(ksp, rhs, solution)
>
> The program runs and gives correct solution. But I got following memory leak 
> errors from valgrind.
> Do I need to create a new ksp in order to avoid the memory leak? Or is it due 
> to the fieldsplit preconditioner I used?
>
> ==1340== 675,330 (1,232 direct, 674,098 indirect) bytes in 7 blocks are 
> definitely lost in loss record 3,123 of 3,155
> ==1340== at 0x4C320A6: memalign (in 
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==1340== by 0x4FDDA26: PetscMallocAlign (mal.c:49)
> ==1340== by 0x4FDF3AD: PetscMallocA (mal.c:422)
> ==1340== by 0x6564982: PCCreate_LU (lu.c:241)
> ==1340== by 0x66BD26A: PCSetType (pcset.c:84)
> ==1340== by 0x66BDDF8: PCSetFromOptions (pcset.c:154)
> ==1340== by 0x680DAD0: KSPSetFromOptions (itcl.c:335)
> ==1340== by 0x6606EA7: PCSetUp_FieldSplit (fieldsplit.c:944)
> ==1340== by 0x66B29C4: PCSetUp (precon.c:894)
> ==1340== by 0x68174DF: KSPSetUp (itfunc.c:376)
> ==1340== by 0x681B07D: KSPSolve (itfunc.c:703)
> ==1340== by 0x118F87: stokesSolver::forwardStep() (transient.cpp:1256)
> ==1340==
> ==1340== 851,586 (6,840 direct, 844,746 indirect) bytes in 9 blocks are 
> definitely lost in loss record 3,126 of 3,155
> ==1340== at 0x4C320A6: memalign (in 
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==1340== by 0x4FDDA26: PetscMallocAlign (mal.c:49)
> ==1340== by 0x4FDF3AD: PetscMallocA (mal.c:422)
> ==1340== by 0x55C6C46: ISCreate (isreg.c:37)
> ==1340== by 0x55B5983: ISCreateGeneral (general.c:627)
> ==1340== by 0x55B1C01: ISInvertPermutation_General (general.c:174)
> ==1340== by 0x55BD8D5: ISInvertPermutation (index.c:481)
> ==1340== by 0x5C275DC: MatLUFactorSymbolic_SeqAIJ (aijfact.c:296)
> ==1340== by 0x57824CF: MatLUFactorSymbolic (matrix.c:3005)
> ==1340== by 0x656311C: PCSetUp_LU (lu.c:109)
> ==1340== by 0x66B29C4: PCSetUp (precon.c:894)
> ==1340== by 0x68174DF: KSPSetUp (itfunc.c:376)
> ==1340==
> ==1340== 979,830 (25,488 direct, 954,342 indirect) bytes in 9 blocks are 
> definitely lost in loss record 3,129 of 3,155
> ==1340== at 0x4C320A6: memalign (in 
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==1340== by 0x4FDDA26: PetscMallocAlign (mal.c:49)
> ==1340== by 0x4FDF3AD: PetscMallocA (mal.c:422)
> ==1340== by 0x5DC7F7D: MatCreate (gcreate.c:83)
> ==1340== by 0x5C24F29: MatGetFactor_seqaij_petsc (aijfact.c:101)
> ==1340== by 0x5797454: MatGetFactor (matrix.c:4426)
> ==1340== by 0x656308C: PCSetUp_LU (lu.c:108)
> ==1340== by 0x66B29C4: PCSetUp (precon.c:894)
> ==1340== by 0x68174DF: KSPSetUp (itfunc.c:376)
> ==1340== by 0x681B07D: KSPSolve (itfunc.c:703)
> ==1340== by 0x660BDA1: PCApply_FieldSplit_Schur (fieldsplit.c:1180)
> ==1340== by 0x66AC096: PCApply (precon.c:444)
> ==1340==
> ==1340== 1,070,621 (5,320 direct, 1,065,301 indirect) bytes in 7 blocks are 
> definitely lost in loss record 3,134 of 3,155
> ==1340== at 0x4C320A6: memalign (in 
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==1340== by 0x4FDDA26: PetscMallocAlign (mal.c:49)
> ==1340== by 0x4FDF3AD: PetscMallocA (mal.c:422)
> ==1340== by 0x55C6C46: ISCreate (isreg.c:37)
> ==1340== by 0x55B5983: ISCreateGeneral (general.c:627)
> ==1340== by 0x5DA3869: MatGetOrdering_ND (spnd.c:27)
> ==1340== by 0x5DA7712: MatGetOrdering (sorder.c:247)
> ==1340== by 0x6562E19: PCSetUp_LU (lu.c:98)
> ==1340== by 0x66B29C4: PCSetUp (precon.c:894)
> ==1340== by 0x68174DF: KSPSetUp (itfunc.c:376)
> ==1340== by 0x681B07D: KSPSolve (itfunc.c:703)
> ==1340== by 0x660BDA1: PCApply_FieldSplit_Schur (fieldsplit.c:1180)

Reply via email to