Hong, I think what you wrote is conceptually wrong, being in the interface part of the library. The extra allocation is not done consistently throughout all the specific implementations that MatCreateSubMatrices can use. Here is an excerpt of a valgrind error I'm getting
==37303== Conditional jump or move depends on uninitialised value(s) ==37303== at 0xA94B0D7: MatDestroySubMatrices (/home/szampini/src/petsc/src/mat/interface/matrix.c:6890) ==37303== by 0xAFA0400: PCBDDCSubSchursSetUp (/home/szampini/src/petsc/src/ksp/pc/impls/bddc/bddcschurs.c:1545) ..... ==37303== Uninitialised value was created by a heap allocation ==37303== at 0x4C2FF83: memalign (/builddir/build/BUILD/valgrind-3.12.0/coregrind/m_replacemalloc/vg_replace_malloc.c:858) ==37303== by 0x9FA172C: PetscMallocAlign (/home/szampini/src/petsc/src/sys/memory/mal.c:39) ==37303== by 0x9FA4044: PetscTrMallocDefault (/home/szampini/src/petsc/src/sys/memory/mtr.c:183) ==37303== by 0xA87BE20: MatCreateSubMatrix_MPIAIJ_All (/home/szampini/src/petsc/src/mat/impls/aij/mpi/mpiov.c:1082) ==37303== by 0xA8852F1: MatCreateSubMatrices_MPIAIJ (/home/szampini/src/petsc/src/mat/impls/aij/mpi/mpiov.c:2024) ==37303== by 0xA9490C3: MatCreateSubMatrices (/home/szampini/src/petsc/src/mat/interface/matrix.c:6742) ==37303== by 0xAF9F401: PCBDDCSubSchursSetUp (/home/szampini/src/petsc/src/ksp/pc/impls/bddc/bddcschurs.c:1506) You can see the calling sequence, so that maybe I'm doing something wrong in bddcschurs.c. Thanks, Stefano 2017-07-12 22:20 GMT+03:00 Hong <[email protected]>: > MatCreateSubMatrices_xxx() calloc an array of size n+1, n=ismax and > submat[n]=null as default. > > For MatCreateSubMatrices_MPIAIJ(), I calloc ismax+nstages and use > submat[n] ... to store some datastructures for reuse. > > When submat[n] != null, these data structures are destroyed. > > Hong > > > On Wed, Jul 12, 2017 at 11:29 AM, Stefano Zampini < > [email protected]> wrote: > >> Is line number 6890 of matrix.c correct??? >> >> https://bitbucket.org/petsc/petsc/src/b02a13eda23b9fabea7dbf >> cadcfb98e3258ee49d/src/mat/interface/matrix.c?at=master& >> fileviewer=file-view-default#matrix.c-6890 >> >> -- >> Stefano >> > > -- Stefano
