Newsgroups: comp.parallel.mpi,comp.parallel.pvm
From: Milind Bhandarkar <milind@ks.uiuc.edu>
Subject: Re: Why explicit message passing??
Organization: University Of Illinois
Date: Thu, 02 Apr 1998 09:44:09 -0600
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-ID: <3523B249.ABB3413D@ks.uiuc.edu>

Congratulations to whoever started this thread on an important topic. It
seems to have provoked a lot of discussion.

Someone mentioned legacy code as a reason for using message passing. In
our experience, the impact of legacy code not only dictates one to use a
particular paradigm for parallelizing that particular code, but also to
make use of the same paradigm for the entire application (even built
from scratch) that uses the said legacy code.

To give a concrete example, our group developed NAMD, a molecular
dynamics simulation application. NAMD uses spatial decomposition, and
because of the inherent irregulaity of the problem, we thought it would
be great to use message-driven programming style (that exhibits latency
tolerance) and thus allows load balancing without having to write a lot
of code. Well, the full electrostatics calculation module (DPMTA) in
that program was already written by another group (at Duke University)
in PVM message-passing style. We did not want to rewrite that entire
module again from scratch, and at that time, the message-driven language
Charm++ that we wanted to use for the remaining application could not
co-exist with PVM, so we had to write the entire application in PVM.
This led to a lot of code that was a mix of both the styles, and soon
became very difficult to maintain.

One good thing that came out of this entire exercise was the development
of Converse, a runtime system for interoperability. (See
http://charm.cs.uiuc.edu/) Converse provides mechanisms for
multiparadigm interoperability and thus allows one to link modules
written using multiple paradigms in a single application. Thus one can
use the appropriate paradigm for the task at hand, and can still be sure
of that module to be used in applications based on other paradigms. To
date, we have implemented a number of parallel programming paradigms and
libraries including message-passing (MPI, PVM), data-parallel (a subset
of HPF, pC++), message-driven (Charm++, pJava, mdPerl), threads (posix,
HPC++), DSM (a CRL-like library) etc.

The new version of NAMD (http://www.ks.uiuc.edu/) uses Threads, PVM,
Charm++, and simple send-receive using message streams for individual
modules linked together as a single application. We have recently
published a paper on our experiences with Converse
(http://charm.cs.uiuc.edu/papers/ConverseRTSPP98.html).

milind

_Milind_A._Bhandarkar________________________________milind@ks.uiuc.edu_
(W)_3117,Beckman_Institute,405,N.Mathews,Urbana,IL_61801_(217)_244_1851_

