[Beowulf] Fortran Vector Program Help
Robert G. Brown
rgb at phy.duke.edu
Mon Nov 8 12:02:50 PST 2004
On Mon, 8 Nov 2004, Timo Mechler wrote:
> Hi all,
> I'm new to the field of parallel computing, so I would appreciate if some
> of you veterans out there could lend me some assistance on this one. I
> was given a Fortran vector program by a physics professor that models
> interactions between atoms or something like it. Supposedly this program
> is setup for vector computing. Would this be possible to run on an x86
> based Rocks cluster? If so, what tools do I need to compile it and run
> it? Thanks in advance.
This question is difficult to impossible to answer with any degree of
certainty without a great deal of study. The most likely answer is "not
without significantly modifying the code". Where "significantly" can
mean anything from replacing core algorithms with parallel instead of
vector versions to rewriting the entire application from scratch.
The vector and parallel computing paradigms are not exactly congruent.
In a vector model computations proceed efficiently by being pipelined
and executed in parallel on a microscopic basis, and most commonly
proceed by efficiently executing a simple, repetitive set of numerical
operations on sequential areas of memory (a "vector").
Parallel programs more often proceed efficiently by blocking the problem
out as coarsely as possible into "large" chunks of work that can be
accomplished in parallel on different CPUs as independently as possible.
The actual blocks of work can have almost any structure, as long as they
can proceed independently for at least a certain amount of time, and the
scaling properties of the parallel program depend heavily on just how
long that time might be relative to the amount of e.g. communication
that has to exist between processors.
With that said, there may be some compiler/library combinations out
there that can manage pragmas from old vector machines and do something
that will give you a decent speedup in a parallel environment. Probably
NOT the performance you would get on a rewrite, but maybe something you
can use. Modern CPUs and compilers actually (often) support certain
vectorizations on a per-cpu basis, as well. You can actually build a
parallel supercomputer whose nodes are themselves vector processors, for
example. Again, though, I'd guess that to take maximal advantage of a
modern CPU architecture you'll have to work on a code rewrite, following
a bit of effort learning parallel programming. You might look at e.g.
Ian Foster's online book on parallel programming (or buy a paper copy).
Hope this helps.
> Best Regards,
> -Timo Mechler
Robert G. Brown http://www.phy.duke.edu/~rgb/
Duke University Dept. of Physics, Box 90305
Durham, N.C. 27708-0305
Phone: 1-919-660-2567 Fax: 919-660-2525 email:rgb at phy.duke.edu
More information about the Beowulf