Re: [petsc-dev] Possible SF bug
On Thu, Apr 1, 2021 at 6:24 PM Junchao Zhang <[email protected]> wrote:
Matt, It is easy for me to know it is not an SF bug, since the code passes a null pointer (as leafdata) to an SF with 9 roots and leaves. But I could not figure out what the root reason is.
Junchao, thanks so much for looking at this. With what you show below, I think I can figure it out now. Thanks, Matt
Here is my finding. In DMSetUp(forest) >> DMSetUp_p4est >> DMPforestGetPlex
DMConvert_pforest_plex >> .. >> DMShareDiscretization, we have dmB->sectionSF = dmA->sectionSF; Which makes the two DMs, forest, and ((DM_Forest_pforest*) ((DM_Forest*) forest->data)->data)->plex, share the same sectionSF. But in the test, there are two places to populate the sectionSF based on different DMs.
1) In DMGlobalToLocal(forest, g, INSERT_VALUES, l), the SF is built based on forest and its local/globalSection. 2) In VecView(g, viewer), which does ierr = VecGetDM(vec,&dm);CHKERRQ(ierr);
ierr = DMPforestGetPlex(dm,&plex);CHKERRQ(ierr); ierr = VecSetDM(vec,plex);CHKERRQ(ierr); ierr = VecView_Plex(vec,viewer);CHKERRQ(ierr); ierr = VecSetDM(vec,dm);CHKERRQ(ierr);
VecView_Plex() calls VecView_Plex_HDF5_Internal(), which builds the SF based on plex's local/globalSection.
Depending on which function is called first, we get different SFs. The crashed one did 1) first and then 2). The 'good' one did 2) and then 1). But even the good one is wrong, since it gives an empty SF (thus not crashing the code).
--Junchao Zhang
On Tue, Mar 30, 2021 at 5:44 AM Matthew Knepley <[email protected]> wrote:
On Mon, Mar 29, 2021 at 11:05 PM Junchao Zhang <[email protected]> wrote:
Matt, I can reproduce the error. Let me see what is wrong.
Thanks! It might be a bug in Plex or Forest as well, but it is hard for me to tell.
Matt
Thanks. --Junchao Zhang
On Mon, Mar 29, 2021 at 2:16 PM Matthew Knepley <[email protected]> wrote:
Junchao,
I have an SF problem, which I think is a caching bug, but it is hard to see what is happening in the internals. I have made a small example which should help you see what is wrong. It is attached.
If you run without arguments, you get
master *:~/Downloads/tmp/Salac$ ./forestHDF [0]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- [0]PETSC ERROR: Null argument, when expecting valid pointer [0]PETSC ERROR: Trying to copy to a null pointer [0]PETSC ERROR: See https://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting. [0]PETSC ERROR: Petsc Development GIT revision: v3.14.5-879-g03cacdc99d GIT Date: 2021-03-22 01:02:08 +0000 [0]PETSC ERROR: ./forestHDF on a arch-master-debug named MacBook-Pro.fios-router.home by knepley Mon Mar 29 15:14:16 2021 [0]PETSC ERROR: Configure options --PETSC_ARCH=arch-master-debug --download-bamg --download-chaco --download-ctetgen --download-egads --download-eigen --download-exodusii --download-fftw --download-hpddm --download-libpng --download-metis --download-ml --download-mumps --download-netcdf --download-opencascade --download-p4est --download-parmetis --download-pnetcdf --download-scalapack --download-slepc --download-suitesparse --download-superlu_dist --download-triangle --with-cmake-exec=/PETSc3/petsc/apple/bin/cmake --with-ctest-exec=/PETSc3/petsc/apple/bin/ctest --with-hdf5-dir=/PETSc3/petsc/apple --with-mpi-dir=/PETSc3/petsc/apple --with-shared-libraries --with-slepc --with-zlib --download-tetgen [0]PETSC ERROR: #1 PetscMemcpy() at /PETSc3/petsc/petsc-dev/include/petscsys.h:1798 [0]PETSC ERROR: #2 UnpackAndInsert_PetscReal_1_1() at /PETSc3/petsc/petsc-dev/src/vec/is/sf/impls/basic/sfpack.c:426 [0]PETSC ERROR: #3 ScatterAndInsert_PetscReal_1_1() at /PETSc3/petsc/petsc-dev/src/vec/is/sf/impls/basic/sfpack.c:426 [0]PETSC ERROR: #4 PetscSFLinkScatterLocal() at /PETSc3/petsc/petsc-dev/src/vec/is/sf/impls/basic/sfpack.c:1248 [0]PETSC ERROR: #5 PetscSFBcastBegin_Basic() at /PETSc3/petsc/petsc-dev/src/vec/is/sf/impls/basic/sfbasic.c:193 [0]PETSC ERROR: #6 PetscSFBcastWithMemTypeBegin() at /PETSc3/petsc/petsc-dev/src/vec/is/sf/interface/sf.c:1493 [0]PETSC ERROR: #7 DMGlobalToLocalBegin() at /PETSc3/petsc/petsc-dev/src/dm/interface/dm.c:2565 [0]PETSC ERROR: #8 VecView_Plex_HDF5_Internal() at /PETSc3/petsc/petsc-dev/src/dm/impls/plex/plexhdf5.c:251 [0]PETSC ERROR: #9 VecView_Plex() at /PETSc3/petsc/petsc-dev/src/dm/impls/plex/plex.c:385 [0]PETSC ERROR: #10 VecView_p4est() at /PETSc3/petsc/petsc-dev/src/dm/impls/forest/p4est/pforest.c:4922 [0]PETSC ERROR: #11 VecView() at /PETSc3/petsc/petsc-dev/src/vec/vec/interface/vector.c:613 [0]PETSC ERROR: #12 main() at /Users/knepley/Downloads/tmp/Salac/forestHDF.c:53 [0]PETSC ERROR: PETSc Option Table entries: [0]PETSC ERROR: -malloc_debug [0]PETSC ERROR: ----------------End of Error Message -------send entire error message to [email protected] application called MPI_Abort(MPI_COMM_SELF, 53001) - process 0 [unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=53001
If you run with
./forestHDF -write_early
or
./forestHDF -no_g2l
Then it is fine. Thus it appears to me that if you run a G2L at the wrong time, something is incorrectly cached.
Thanks,
Matt
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
participants (1)
-
Matthew Knepley