Newsgroups: comp.parallel.pvm
From: eddemain@neumann.uwaterloo.ca (Erik Demaine)
Subject: Re: MPI or PVM ??
Organization: University of Waterloo
Date: Fri, 17 Nov 1995 14:41:19 GMT
Message-ID: <DI6zGv.o62@undergrad.math.uwaterloo.ca>

Fouq  (sometimes KUF). (fouquet@ens.lifl.fr) wrote:
: I got a question for the ones who really know the parallel world :
: What is the best, PVM or MPI ??
: Easy to ask and probably a lot to say.

Hahaha!  This is probably the only question you could ask on a research
newsgroup that you almost get flamed on :).

Personally, I haven't had much experience at all with PVM, but lots with
MPI.  I choose the latter, for the following reasons:

        1. PVM has the complication of handling process spawning.  For my
	   applications, I want n processors.  Period.  I want the user to
	   specify it at launch time, NOT the program.  It is also complicated
	   to keep track of tids in PVM; although you can create a group to
	   get logical 0,1,...,n-1 numbering, this is automatic in MPI.
	2. MPI has lots of brief useful primitives, like MPI_Bcast.
	3. MPI has great group (communicator) handling.
	4. MPI has a simple profiling idea (and MPICH has a great utility for
	   using it).  The only problem I know of is that you can't easily
	   have multiple profiling layers.  Oh well.  I wonder if you can
	   in PVM... (I don't think so.)  I know PVM's profiling system is
	   limited, and to do any real manipulation you have to create a
	   "collector" process (I haven't done this, this is only what I've
	   heard).

There is one main disadvantage of MPI: process spawning is not supported.
Having this, however, would contradict 1.  I have no need for process
spawning.  The other problem I've had with MPI is that it has no "real"
parallel I/O support.  I'll have to wait for MPI-2, I guess.  MPI-2 is
the project for creating the new MPI, which will probably support the
following (extracted from the FAQ):
   * I/O                              - I can't wait
   * Active messages                  - Should be nice
   * Process startup                  \_ hopefully optional
   * Dynamic process control          /
   * Remote store/access              - I can't wait
   * Fortran 90 and C++ language bindings
   * Graphics                         - Would be very nice (X I hope)
   * Real-time support                - I doubt I'd use

Really whether you want to use MPI or PVM depends on your application and
your system.  MPI, as far as I know, isn't implemented *very* well on
heterogeneous networks (not sure on this).  Most of MPI is implemented atop
PVM (via the Unify project).  PVM is implemented on MPI, but it needs a bit
more information (e.g., you have to specify how to spawn processes); this has
been used to do an efficient implementation on the IBM SP-2.

For more information, see the MPI homepage:
	http://www.mcs.anl.gov/mpi
which contains links to the MPI implementations, including Unify,
and the PVM homepage:
	http://www.epm.ornl.gov/pvm/pvm_home.html
which contains highlights of PVM, future plans, etc.

Ciao!
Erik
--
Erik Demaine                 \/  e-mail: eddemain@neumann.uwaterloo.ca
Dept. of Computer Science    /\  URL   : http://barrow.uwaterloo.ca/~eddemain/
University of Waterloo       \/  Most jugglers do poorly while drunk, especially
Waterloo, ON Canada N2L 3G1  /\  in a large wavelength gravity field.

