[petsc-users] DMPlexCreateSection crashed with larger number of processors

Mike Michell mi.mike1021 at gmail.com
Wed Jul 13 10:35:22 CDT 2022


No, that is not exactly what I want to do. And it seems not that efficient
way. But in case of a certain processor does not have any boundary, how can
crash be avoided? I was trying to pass a custom label marked for parallel
boundary, but DMGetStratumIS() does not accept the custom label I declared.
In contrast, "marker" and "depth" labels that system automatically creates
can be passed to DMGetStratumIS() without problem.

Thanks,
Mike


> On Wed, Jul 13, 2022 at 10:08 AM Mike Michell <mi.mike1021 at gmail.com>
> wrote:
>
>> What I did to avoid the crash is to provide bcPointIS from "call
>> DMGetStratumIS(dm_geom, "depth", dim, bcPointIS(1),ierr);CHKERRA(ierr)",
>> instead of "marker" for calling DMGetStratumIS().
>> The petscsection building part is
>> from src/dm/impls/plex/tutorials/ex1f90.F90 (See line 72).
>>
>
> That looks like you are putting all cells in the IS. Is that what you want?
>
>   Thanks,
>
>      Matt
>
>
>>
>>> On Sat, Jul 9, 2022 at 8:34 AM Matthew Knepley <knepley at gmail.com>
>>> wrote:
>>>
>>>> On Fri, Jul 8, 2022 at 7:41 PM Mike Michell <mi.mike1021 at gmail.com>
>>>> wrote:
>>>>
>>>>> As a follow-up, just "depth" default label was provided to avoid NULL
>>>>> PETScIS, and it seems working.
>>>>>
>>>>
>>>> Ah, "depth" is definitely required and is produced by DMPlexStratify().
>>>> I will put in a check for this so that you get a good error message.
>>>>
>>>
>>> I cannot find an instance of an IS being pulled from the depth label
>>> here. Do you have something I can run that shows this fault?
>>>
>>>   Thanks,
>>>
>>>      Matt
>>>
>>>
>>>>   Thanks!
>>>>
>>>>      Matt
>>>>
>>>>
>>>>> Thanks,
>>>>> Mike
>>>>>
>>>>>
>>>>>> It looks like NULL PETScIS is obtained from DMGetStratumIS() which is
>>>>>> shown in the previously attached code. Currently, "marker" label is used to
>>>>>> define default bcPointIS pointer with numBC=1 through DMGetStratumIS(), and
>>>>>> it seems that if a certain proc does not have any boundary from this
>>>>>> "marker" label, the DMPlexCreateSection() crashes.
>>>>>>
>>>>>> The PETSc's manual page for DMPlexCreateSection() says "bcPoints" is
>>>>>> an IS holding points to which each boundary condition applies. So, by
>>>>>> including no boundary for a certain distributed mesh block, it looks very
>>>>>> natural that this function crashes. How can I not to pass a NULL PETScIS in
>>>>>> this case? Is there any specific way for that (or a trick)?
>>>>>>
>>>>>> Thanks,
>>>>>> Mike
>>>>>>
>>>>>>
>>>>>>> On Wed, Jul 6, 2022 at 3:42 PM Mike Michell <mi.mike1021 at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I am passing NULL for IS Permutation as;
>>>>>>>>
>>>>>>>> call
>>>>>>>> DMPlexCreateSection(dm_geom,nolabel,pNumComp,pNumDof,numBC,pBcField,pBcCompIS,pBcPointIS,PETSC_NULL_IS,section,ierr)
>>>>>>>>
>>>>>>>> Should I define non-NULL IS Permutation before I call
>>>>>>>> DMPlexCreateSection() to avoid the issue?
>>>>>>>>
>>>>>>>
>>>>>>> No, the problem is not the perm argument. To be sure, we should get
>>>>>>> a stack trace with line numbers (use a debug build). To me it looked
>>>>>>> like you passed a NULL IS to DMAddBoundary().
>>>>>>>
>>>>>>>   Thanks,
>>>>>>>
>>>>>>>     Matt
>>>>>>>
>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Mike
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Jul 6, 2022 at 12:57 PM Mike Michell <mi.mike1021 at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi, I am using DMPlex for a FVM code written in Fortran that uses
>>>>>>>>>> DMPlexCreateSection() to prepare an output file in vtu format. A domain of
>>>>>>>>>> interest has around 5000 node points and with small number of processors
>>>>>>>>>> (such as nproc=3), the DMPlexCreateSection() works fine. However, if a
>>>>>>>>>> larger number of procs (such as nproc=20) is used,  DMPlexCreateSection()
>>>>>>>>>> crashes with error message below. It looks very similar problem in a
>>>>>>>>>> previous PETSc user inquiry: " [petsc-dev] DMPlexCreateSection
>>>>>>>>>> crash in a no-boundary corner case
>>>>>>>>>> <https://lists.mcs.anl.gov/pipermail/petsc-dev/2013-November/014049.html>
>>>>>>>>>> "
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Yes, the recommendation is not to pass a NULL PetscIS to the
>>>>>>>>> AddBoundary() routine. Are you doing this?
>>>>>>>>>
>>>>>>>>>   Thanks,
>>>>>>>>>
>>>>>>>>>      Matt
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> When I call DMPlexCreateSection(), a nullified pointer
>>>>>>>>>> "nolabel(:)=>NULL()" is provided. What is a possible solution to this
>>>>>>>>>> problem? It looks like there is a problem with a processor that does not
>>>>>>>>>> have any boundaries. A piece of the source code is attached to show how
>>>>>>>>>> the  DMPlexCreateSection() is used in the code.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Mike
>>>>>>>>>>
>>>>>>>>>> [16]PETSC ERROR: --------------------- Error Message
>>>>>>>>>> --------------------------------------------------------------
>>>>>>>>>> [16]PETSC ERROR: Null argument, when expecting valid pointer
>>>>>>>>>> [16]PETSC ERROR: Null Pointer: Parameter # 1
>>>>>>>>>> [16]PETSC ERROR: See https://petsc.org/release/faq/ for trouble
>>>>>>>>>> shooting.
>>>>>>>>>> [16]PETSC ERROR: Petsc Release Version 3.17.0, unknown
>>>>>>>>>> [16]PETSC ERROR: #1 ISGetLocalSize() at
>>>>>>>>>> [16]PETSC ERROR: #2 DMPlexCreateSectionBCDof() at
>>>>>>>>>> [16]PETSC ERROR: #3 DMPlexCreateSection() at
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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/>
>>>>
>>>
>>>
>>> --
>>> 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/>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220713/4fe3e9b5/attachment-0001.html>


More information about the petsc-users mailing list