[petsc-users] DMPlexCreateSection crashed with larger number of processors
Matthew Knepley
knepley at gmail.com
Wed Jul 13 10:42:54 CDT 2022
On Wed, Jul 13, 2022 at 10:35 AM Mike Michell <mi.mike1021 at gmail.com> wrote:
> 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.
>
This line
PetscCallA(DMGetStratumIS(dm, 'marker', one, bcPointIS(1),ierr))
is extracting a label from the DM. If your label is not attached to the DM,
you just need DMLabelGetStratumIS()
https://petsc.org/main/docs/manualpages/DMLABEL/DMLabelGetStratumIS/
Thanks
Matt
> 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/>
>>
>
--
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/b9c4adf4/attachment-0001.html>
More information about the petsc-users
mailing list