[petsc-users] PETSc initialization error

Sam Guo sam.guo at cd-adapco.com
Sat Jun 20 12:08:50 CDT 2020


Hi Junchao,
   Thanks for the quick response.
   By "session" I mean the program. I tried your patch but it does not
help. This is the serial. I guess finalizer may not be called?

Thanks,
Sam

On Sat, Jun 20, 2020 at 8:54 AM Junchao Zhang <junchao.zhang at gmail.com>
wrote:

> I don't understand what your session means. Let's try this patch
>
> diff --git a/src/sys/mpiuni/mpi.c b/src/sys/mpiuni/mpi.c
> index d559a513..c058265d 100644
> --- a/src/sys/mpiuni/mpi.c
> +++ b/src/sys/mpiuni/mpi.c
> @@ -283,6 +283,7 @@ int MPI_Finalize(void)
>    MPI_Comm_free(&comm);
>    comm = MPI_COMM_SELF;
>    MPI_Comm_free(&comm);
> +  num_attr = 1; /* reset the counter */
>    MPI_was_finalized = 1;
>    return MPI_SUCCESS;
>  }
>
>
> --Junchao Zhang
>
>
> On Sat, Jun 20, 2020 at 10:48 AM Sam Guo <sam.guo at cd-adapco.com> wrote:
>
>> Typo: I mean “Assuming initializer is only needed once for entire session”
>>
>> On Saturday, June 20, 2020, Sam Guo <sam.guo at cd-adapco.com> wrote:
>>
>>> Assuming finalizer is only needed once for entire session(?), I can put
>>> initializer into the static block to call it once but where do I call
>>> finalizer?
>>>
>>>
>>> On Saturday, June 20, 2020, Junchao Zhang <junchao.zhang at gmail.com>
>>> wrote:
>>>
>>>> The counter num_attr should be recycled. But first try to call PETSc
>>>> initialize/Finalize only once to see it fixes the error.
>>>> --Junchao Zhang
>>>>
>>>>
>>>> On Sat, Jun 20, 2020 at 12:48 AM Sam Guo <sam.guo at cd-adapco.com> wrote:
>>>>
>>>>> To clarify, I call PETSc initialize and PETSc finalize everytime I
>>>>> call SLEPc:
>>>>>
>>>>>   PetscInitializeNoPointers(argc,args,nullptr,nullptr);
>>>>>
>>>>>   SlepcInitialize(&argc,&args,static_cast<char*>(nullptr),help);
>>>>>
>>>>>   //calling slepc
>>>>>
>>>>>   SlepcFinalize();
>>>>>
>>>>>    PetscFinalize();
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Jun 19, 2020 at 10:32 PM Sam Guo <sam.guo at cd-adapco.com>
>>>>> wrote:
>>>>>
>>>>>> Dear PETSc team,
>>>>>>    When I called SLEPc multiple time, I eventually got following
>>>>>> error:
>>>>>>
>>>>>> MPI operation not supported by PETSc's sequential MPI wrappers
>>>>>> [0]PETSC ERROR: #1 PetscInitialize() line 967 in
>>>>>> ../../../petsc/src/sys/objects/pinit.c
>>>>>> [0]PETSC ERROR: #2 SlepcInitialize() line 262 in
>>>>>> ../../../slepc/src/sys/slepcinit.c
>>>>>> [0]PETSC ERROR: #3 SlepcInitializeNoPointers() line 359 in
>>>>>> ../../../slepc/src/sys/slepcinit.c
>>>>>> PETSC ERROR: Logging has not been enabled.
>>>>>> You might have forgotten to call PetscInitialize().
>>>>>>
>>>>>>   I debugged: it is because of following in petsc/src/sys/mpiuni/mpi.c
>>>>>>
>>>>>> if (num_attr >= MAX_ATTR)
>>>>>>
>>>>>> in function int MPI_Comm_create_keyval(MPI_Copy_function
>>>>>> *copy_fn,MPI_Delete_function *delete_fn,int *keyval,void *extra_state)
>>>>>>
>>>>>> num_attr is declared static and keeps increasing every
>>>>>> time MPI_Comm_create_keyval is called.
>>>>>>
>>>>>> I am using petsc 3.11.3 but found 3.13.2 has the same logic.
>>>>>>
>>>>>> Is this a bug or I didn't use it correctly?
>>>>>>
>>>>>> Thanks,
>>>>>> Sam
>>>>>>
>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200620/316ea4f6/attachment.html>


More information about the petsc-users mailing list