If you want to run PETSc on a subset of the processes the original program started with, this is easy. Simply use the MPI communicator routines to create a communicator that contains the processes you want PETSc run on. Then on that subset of processes set PETSC_COMM_WORLD to that communicator and call PetscInitialize() on that subset.
Doing anything else is tricky and may not be possible; like running PETSc on more processes than the original application starts MPI with. Barry > On Dec 4, 2018, at 4:22 PM, Klaus Burkart via petsc-users > <[email protected]> wrote: > > Hello, > > I try to integrate petsc into an application and I think it would be much > simpler if I could bypass the applications original MPI functionality by > starting MPI with n processes when initializing Petsc and stopping it when > PetscFinalize(); is called. The standard mpirun -np 4 application > -parameters triggers a couple of events which are of no use to petsc and at > the same time make the implementation very complicated as e.g. relevant data > is lost. > > Is it possible to start MPI with n processes from within the code so it takes > only effect on the petsc code? > > I see a simple way to provide the number of processes through the > configuration file which will hold the solver settings. > > Klaus
