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