[petsc-users] PETSc initialization error

Junchao Zhang junchao.zhang at gmail.com
Sat Jun 20 10:54:16 CDT 2020


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/78d8a84f/attachment-0001.html>


More information about the petsc-users mailing list