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 <[email protected]> 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 >
