Parallel MATLAB and OCTAVE
There are a lot of different ideas about what parallel interactive
environments like MATLAB or OCTAVE mean.
One model is to have multiple sessions open on different machines that
can pass data back and forth easily.
The problem with this (at least for MATLAB users) is that it is very
slow, and requires as many licenses as sessions you have open
(not a problem with OCTAVE). This may be useful for
"embarrasingly parallel" problems where order and scheduling of
calculations is not an issue, but for parallel linear algebra, this is
not a good model. Another
model is to simply use a single "root" interactive environment to
organize and schedule all the parallel computation, which
runs in a lower level language like C with calls to the MPI library and
something like PLAPACK.
I've listed a few of the parallel projects that I've run across.
A much more comprehensive list can be found at the
MIT Parallel
Matlab survey. This list seems to be updated regularly and is
really good.
But, before you spend a lot of time
sifting through these schemes, let me suggest a simple hack that might
well be standard operating proceedure for those in the know. Here's
the idea: write your usual MATLAB code, calling an executable
that you trick MATLAB into thinking it created. The executable is
some compiled C code that you have written with all the calls to
parallel toolboxes you need with input and data passed to and from the
root MATLAB session. To be able to do this, you need the
MATLAB compiler. Generate the C code corresponding to your root
MATLAB code with a call to a dummy function which, after generating the
MATLAB-to-C code you replace with the parallel C code you've
written. I'm sure this idea will also work with OCTAVE in some
fashion.
If you still want to look into parallel MATLAB or OCTAVE, a
recommendation. Of all the schemes I've looked at for running
multiple MATLAB sessions in parallel, the only one I've had success
with is the DPToolbox
out of Uni-Rostock. It's pretty effective, simple to learn
to use, and is current (runs with MATLAB 6). The only drawback is
that it runs on PVM which is unsupported, and network administrators
seem to hate. Your cluser also has to permit nodes to push
xterminals to the root, which many administrators also don't
like. Some other suggestions are below.
Distributed
Parallel Toolbox: My pick.
MPI Toolbox for Matlab
(MPITB): I had originally written disparaging remarks about
this toolbox because they only had binaries available which limited its
use. I've recently been informed that they've made some improvements in
this direction. This looks very promising.
Parallel OCTAVE.
Recently learned about this. Haven't tried it, but it looks
promising.
MultiMATLAB:
Unsupported (unavailable?) parallel matlab toolbox from Cornell. It's
progeny
is the Cornell
Multitask Toolbox for MATLAB® (CMTM). This appears to be
current and
supported. Unfortunately, it only runs on WINDOWS clusters (yup,
apparently
they exist).
ConLAB: This
is
a MATLAB-like environment for interactive parallel computing. Doesn't
appear to
be current, so the functionality is probably limited.
Parallel Toolbox
for MATLAB: This would have been what we needed, 6 years ago.
Unfortunately, outdated toolboxes like this don't grow with Matlab and
become
obsolete quickly.
MATLAB
Compiler (MATCH): Still haven't really figured out what this thing
does.
MPI Toolbox for
Octave-2.1.31
: Dated June 2001.
(Last updated April 22, 2004)