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)