Thanks Jed, that more-or-less covers everything I wanted to know! Best, Toby
----- Toby D. Young Assistant Professor Philosophy-Physics Polish Academy of Sciences Warszawa, Polska www: http://www.ippt.gov.pl/~tyoung skype: stenografia On Mon, 1 Mar 2010, Jed Brown wrote: > On Mon, 1 Mar 2010 13:20:49 +0100, "Toby D. Young" <tyoung at ippt.gov.pl> > wrote: > > > > Greetings, > > > > I am very curious to understand why libmpiuni is there PETSc and how > > he is implemented by PETSc and PETSc-based programs. > > > > I understand that this library can be built as static or dynamic; right? > > I also understand that this library is used when PETSc is compiled with > > MPI, but the program is run without mpirun. (What about mpirun -np > > 1 ./program.x ?) > > MPIUNI is only used if you have not built with a real MPI. It's purpose > is to allow code to be written for the more complex (parallel) case > without littering the code with "#ifdef PARALLEL" statements. It > implements trivial MPI functionality when there is only process (note > that one process is not the same as "one processor" or "one core"). > > If a real MPI is available on your system, then you should use it even > if you only intend to run single-process jobs. This will not reduce > serial performance, but it allows you to interoperate more easily with > other libraries that also use MPI, and it allows you to run with > multiple jobs (again, you do not need multiple cores for this to be > useful, it is convenient for testing algorithmic correctness and > scalability). > > Jed >