Subject: Parallel programming: mpich vs pvm? -> Summary

From: Reinaldo Pis Diez <[email-masked]>
Date: Fri, 14 Dec 2001 11:30:54 -0300

Hi netters,

                 Some days ago I posted a mail seeking for a comparison 
between mpi and pvm wrt performance and ease to use/learn.
                 I got several answers and wish to thank Richard Gillilan, 
Chris Klein, Sigismondo Boschi, Marcel Swart, Huub van Dam, Konrad Hinsen, 
Mark Russell, and David Reichert.
                 First, I must say that mpich and pvm are not the only free 
tools to develop parallel code. LAM-MPI is another free implementation of 
MPI. OpenMP, Global Array Toolkit, and the Bulk Synchronous Parallel (BSP) 
model seem to be good alternatives although I don't know if these are free.
                 Second, it seems to be general agreement to put mpi-based 
tools over pvm. Both mpich and lam-mpi are highly recommended to start with.
                 Below are the corresponding answers.
                 Thanks a lot agains!!
                 Regards,

                                                                 Reinaldo

************* by Richard Gillilan *******************************

I would be interested to know what others think. I have not
coded in PVM, but have studied MPI (MPICH is one implementation
of MPI). MPI seems to be the most widely used now. I have been told
by persons using PVM that it is a good choice when your computing cluser
is heterogeneous.
By the way, the Cornell Theory Center is holding its annual
parallel computing virtual workshop. I took it last year. Though
they run a Win2K cluster, the material is generic and applicable
to any other system: www.tc.cornell.edu/services/edu/events/parallel/

********************by Chris Klein ************************************

another implementation of MPI is LAM-MPI. I am using that for parallel
amber on a linux cluster. Runs better than MPICH (for amber), but I do
not have any experiences with other parallel programs.
My impression is that PVM is considered a bit old-fashioned

********************by Sigismondo Boschi ************************************

PVM is the anchestor of MPI, in the sense J. Dongarra is the main author of 
both.
But PVM is a library, MPI is a standard - with its definition 
(www.mpi-forum.org) and the vendors can optimise it - the important is they 
do not violate the definitions. The best is to learn is MPI, maily because 
PVM is outmoded. However, MPI allow you to have higher performance with 
collective calls and non-blocking routines, and also higher "coding" 
perfomance since it has many high level features.

********************by Marcel Swart ************************************

In fact, you are wrong, there is even a third: LAM-MPI, and it is preferred 
over the other two.
First of all, because MPI is faster and much easier to learn and use than PVM;
second, because LAM-MPI is more stable (and faster) than MPICH.
It can be found at:
http://www.mpi.nd.edu/lam/

********************by Huub van Dam ************************************

MPICH is a freely available implementation of the MPI standard, the currently
dominant Message Passing Interface. PVM was the message passing library that
preceded it and I thought was pretty much dead by now (for good reasons). 
So from the choice of these 2 I would go for MPI.
However the message passing paradigm is not always the most natural 
approach to solving a parallel programming problem. Sometimes using a 
shared memory approach is better. OpenMP seems to popular in this arena 
although it has been applied with mixed success.
If you don't want to decide right now whether a shared memory approach or 
message passing approach is the best you can combine the ease of use of the 
shared memory programming with the high performance of message passing 
using the Global Array Toolkit (http://www.emsl.pnl.gov:2080/docs/global/) 
as developed at Pacific Northwest National Laboratory. However, you should 
have a good look around for a tutorial.

********************by Konrad Hinsen ************************************

Another free MPI implementation is LAM. MPICH and LAM both implement
MPI interface, either one will for for learning, and in most
circumstances there shouldn't be significant performance differences.
As for the choice between PVM and either MPI, I'd go for MPI. Both PVM
and MPI follow the same basic approach (message passing), and MPI is
an industry standard, whereas PVM is not.
However, there is a real alternative worth looking at, the BSP model,
for which there are two implementations, BSPlib from Oxford and PUB
> from Paderborn. BSP (which stands for Bulk Synchronous Parallel) is a
higher-level abstraction than the message-passing model which is the
basis of MPI and PVM. It is much simpler to use and especially to
debug (deadlocks are impossible, for example), and its long-time users
also claim that it permits better communications optimization within
the BSP library. See www.bsp-worldwide.org for more information about
BSP.

********************by Mark Russell ************************************

There is also a library based on the MPI system called 'Lam' - at Notre
Dame University I think? Its standard with most recent Linux
distributions.
The question of which to use, depends on what models you want. PVM is the
older model and I think was designed more for homogenous networks. MPI
(both MPICH and LAM) is the newer standard and is the best for
heterogenous networks.
My opinion is that the MPI is the one to go for, seems to be the one with
the biggest future (until the next one comes along!). The question
between MPICH and LAM is difficult, as everyone has their own favourite.
Personally, I prefer LAM, but I'm sure that you will get mails from other
people who say otherwise! ;-) Fitting MPI into a program is pretty
simple when your learning parallel, though I would recommend getting some
'serious' books on it before jumping in the deep-end. There are lots of
pit-falls and 'tricks' in the system that can be daunting to start with.

********************by David Reichert ************************************

Well that's an interesting question, my gut feeling is that MPI/MPICH is
used more often than PVM. There's a paper comparing the two on the PVM web
site "PVM and MPI: a comparison of Features" by G.A. Geist, J,A. Kohl, and
P.M. Papadopoulos that you may find helpful.
hope that helps,

---

From: Konrad Hinsen <[email-masked]>
Date: 14 Dec 2001 16:30:56 +0100

Reinaldo Pis Diez <[email-masked]> writes:

>                  First, I must say that mpich and pvm are not the only
> free tools to develop parallel code. LAM-MPI is another free
> implementation of MPI. OpenMP, Global Array Toolkit, and the Bulk
> Synchronous Parallel (BSP) model seem to be good alternatives although
> I don't know if these are free.

The Global Array Toolkit is free, as are the two BSP implementations
that I mentioned. OpenMP is not a product, but a convention, it is
implemented by compilers. I am not aware of any free compilers that
implement OpenMP.

Also, OpenMP is for shared memory machines, the other libraries are
for distributed memory machines. You can always use distributed-memory
tools on shared-memory machines, but the other direction doesn't work.
A more general (but more difficult) alternative to OpenMP for shared
memory systems is manual coding of a multithreaded application.
-- 
-------------------------------------------------------------------------------
Konrad Hinsen                            | E-Mail: [email-masked]
Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.56.24
Rue Charles Sadron                       | Fax:  +33-2.38.63.15.17
45071 Orleans Cedex 2                    | Deutsch/Esperanto/English/
France                                   | Nederlands/Francais
-------------------------------------------------------------------------------