MPI question

Berend van Wachem berend at
Mon Oct 16 01:34:33 CDT 2006

Hi Julian,

I am not affiliated to the petsc-team, but have been using petsc a 
number of years.
The idea of MPI is that your whole program get executed on each 
processor. So getting output twice on each processor is quite normal. So 
not only PETSC functions are called by each processor, every command you 
write will be called by each processor. Because variables have different 
values upon each processor, you can imply slightly different behaviour, 
or have each processor work on an own data set.

If you want output, I recommend you to use the PETSC functions for IO: 
PetscPrintf, or PetscSynchronizedPrintf.

I found it helpful to read an introduction to MPI, "Using MPI" by Gropp, 
Lusk, Skjellum.

Good luck,


> I am using petsc in my fem program on the supercomputer we have here at
> texas a&m univ. I configured petsc to build the libraries with mpi. 
> So, I ran  'mpirun -np 2 /home/j0v1008/bin/alphampi a.alpha' in order to use
> 2 processors.
> Till the point where petsc is initialized, everything looks normal. From the
> point petsc in initialized, I get duplicates of everything that is written
> to cout (at the very least, maybe it's doing duplicates of other things as
> well).
> I understand that all the petsc functions might be called twice or so
> depending on how it parallelizes, but I don't understand why it executes
> lines that are outside of the petsc world, that have nothing to do with mpi.
> Maybe this would clear things up:
> void main()
> {
> Cout << "line1"
> //insert code to initialize mpi
> Cout << "line2"
> MyfunctionusingMPI()
> Cout << "line3"
> //insert code to finalizeMPI
> }
> Say I run this program with 2 processors, will "line2" be printed twice ? If
> yes, can you explain why it does that when I didn't ask for that line to be
> parallelized? 
> If no, then why is my fea program behaving so?
> Thanks,
> Julian.

More information about the petsc-users mailing list