Hello,
since our application has two possible entry paths, petsc could be initialized
at different positions. When used as a library (in contrast to a standalone
executable), the code looks like:
PetscErrorCode ierr;
std::cout << "Petsc before PetscInitializeNoArguments()" << std::endl;
ierr = PetscInitializeNoArguments(); CHKERRV(ierr);
std::cout << "Petsc after PetscInitializeNoArguments()" << std::endl;
It never get's to "Petsc after..." and instead hangs and prints this error
message:
Internal Error: invalid error code 609e0e (Ring ids do not match) in
MPIR_Allreduce_impl:712
[0]PETSC ERROR: #1 PetscWorldIsSingleHost() line 99 in
/data2/scratch/lindner/petsc/src/sys/utils/pdisplay.c
[0]PETSC ERROR: #2 PetscSetDisplay() line 123 in
/data2/scratch/lindner/petsc/src/sys/utils/pdisplay.c
[0]PETSC ERROR: #3 PetscOptionsCheckInitial_Private() line 324 in
/data2/scratch/lindner/petsc/src/sys/objects/init.c
[0]PETSC ERROR: #4 PetscInitialize() line 881 in
/data2/scratch/lindner/petsc/src/sys/objects/pinit.c
[0]PETSC ERROR: #5 SolverInterfaceImpl() line 120 in
src/precice/impl/SolverInterfaceImpl.cpp
Which is somehow incomprehensible for me... What could be the cause for that?
Thanks,
Florian