MPI Toolbox for Matlab (MPITB) 

  • Javier Fern├índez Baldomero
  • Mancia Anguita

What is MPITB?:

PC MATLAB Linux users in a cluster with several PCs can use MPITB in order to call MPI library routines from within the MATLAB interpreter. Depending on your licensing scheme (node/user-based), additional licenses might  be required to spawn additional MATLAB processes on other cluster nodes.
Processes can be spawned and arranged in topologies, MATLAB variables can be sent/recvd, etc.
Due to MATLAB's eval facility, commands for remote execution may be passed as strings to the desired MATLAB computing instance, and the result may be sent back to the MATLAB host instance. Several protocols are suggested in the startups subdir.
Some citations to MPITB have been collected here (papers, conferences, labs, etc.) Last update Dec'07.
 (22/Mar/05) MPITB precompiled for MATLAB R14SP1 and LAM-7.1.1. Reworked example subdirs PingPong, Pi, Spawn and Wavelets. Revised tutorial and readme files.
  • Last users search & update Dec'07
  • Time-reversed list of things that people have done with MPITB:

 (5/Dec/07) Samuel has published another paper using MPITB.
 (11/Sept/07) Just noticed that Brad Skinner (et al.) had published this paper in LNCIS (Lecture Notes in Control and Information Sciences).
 (18/Jul/07) Samuel Pichardo has ported the original Linux version to CentOS 5 X64. He has also published a paper using MPITB in PMB (Physics in Medicine and Biology, see MPITB papers above).
 (Mar/07) ARC Wiki MPITB page.
 (Jan/07) Wa-Kun's new web is and his Windows/MPICH version is available in the new downloads page
 (Sept/06) Just noticed this paper published in IEICE Trans. Fundamentals.
 (22/Dec/05) Wa-Kun Lam has ported the original Linux/LAM version to Windows/MPICH. (original URL broken, see 2 lines above for new URL).
Sites with links to MPITB:

Last links search & update Jan'08

LAM Home Page ( - MPI Applications ).

Lawrence Livermore National Laboratory ( LLNL > Centre for Applied Scientific Computing  CASC > Software > SUNDIALS - SUite of Nonlinear and DIfferential ALgebraic equation Solvers )
SUNDIALS Home Page | Download
Link to MPITB in (Documentation > sundialsTB > Links section at end-of-page)

HKBU Science Faculty Cluster ( > Seminar > Introduction to using the cluster > Software Installed )
OS comparison project for the TDG cluster (sections III.6, VI.5.a, VIII.3/4)
HPCC Centre ( Software > Apps & Libs > MPITB) / setup
TDGC Website ( Software > MPITB ) / tutorial
TDGC syllabus (includes section V 2h MPITB)
Morris Law's Lab for MATH2160 (alt) (index) @ HKBU Math Deptartment
Morris Law's presentation (alt) for COMP3320 @ HKBU CS Deptartment
Morris Law's presentation (alt) for LinuxTalk @ HKLUG

Sebastien Goasguen @ CELAB / NanoHub / NCN (see this)
moved to Purdue TeraGrid > People (see this)
Sebastien's presentation @ DURINT 2003 Kick-Off Meeting
Jose Fortes' presentation @ DURINT 2003 Kick-Off Meeting
Ron Choy's Parallel MATLAB Survey > MPITB
Ron Choy's MS Thesis including his Parallel MATLAB survey (broken, see this) (broken, try this)

Russel Luke's Parallel MATLAB Page ( University of Delaware > Academic&Research > Departments > Matematical Sciences > People > Faculty > Luke, D.R. > Home Page > Research > Parallel MATLAB and Octave > Parallel Octave)

LinuxLAB ( University of Washington > Departments > Academic Departments > Electrical Engineering > Computing > General Computing Information > Frequently Asked Questions > Computing Labs > Linux Lab MATLAB Multi Processing )

Einar Heiberg's Home Page ( > software > Parallelization Toolkit Home Page ( > Last item > 4th point)
University of Waterloo @ Ontario, Canada ( > IST > EW > SAW > MATLAB > Parallel)
3rd party methods for Parallel Matlab

MEX bindings for MPI-1.2 calls, except for MPI_Pcontrol, MPI_Op_create, MPI_Op_free, and those related to derived datatypes (MPI_Type_*).
MEX bindings for some MPI-2.0 calls: the Info object (MPI_Info_*) and Spawn (MPI_Comm_spawn[_multiple], _Comm_get_parent, _Open/Close_port, _Comm_accept/connect/disconnect, _[Un]Publish/Lookup_name).
Extensive "Tutorial script" for learning and getting acquainted to MPI bindings quick and easily. No need to learn any compilation tools or environments. You'll master MPI if you proceed thru the tutorial copying-and-pasting commands to the MATLAB window(s) and looking at the output.
Help files for all interfaced MPI calls, extracted from the LAM/MPI man pages, which in turn were based on the MPICH man pages (thanks to all)
Source code self-documented with error messages/comments
Reworked example subdirs: PingPong, Pi, Spawn, Wavelets
Useful for teaching LAM/MPI.
Useful for research, due to MATLAB's rapid prototyping capabilities.

Tested with LAM-7.1.1 dynamically linked. You still may retouch the Makefiles in the source and try to link against the RedHat-provided (static) LAM rpm package/libraries, but that's neither tested nor recommended.
Tested under Athlon MP 2400+ Linux Fedora Core 3), glibc-2.3.3 compiling environment (gcc 3.4.3), MATLAB 7.0.1 R14SP1.
Needs a working LAM 7.1.x installation (shared libraries). For those willing to know, the LAM configure switches used for testing were:
 ./configure -prefix=/<myhomedir>/lam-7.1.1 \
--enable-shared --disable-static \
--without-fc --without-mpi2cpp -->
--with-threads=posix --with-trillium --with-modules
Needs a working MATLAB 7 installation on each node (on which you want to spawn a MATLAB process). Depending on your licensing scheme (user/node-based) this requirement could be relaxed.
Thanks to Peter Boettcher and Sebastien Goasguen, who helped in several ways to the upgrading to R13.
Please check the MD5 sum before installing.


MPITB source and precompiled code for Fedora Core 3, MATLAB 7.0.1 R14SP1, LAM 7.1.1:
mpitb-FC3-R14SP1-LAM711.tgz (925143bytes). md5sum -c r14sp1lam711sum to check file integrity.
Companion README and TUTORIAL files

MPITB source and precompiled code for RedHat 8.0, MATLAB 6.5, LAM 7.0.4:
mpitb-RH80-MLAB65-LAM704.tgz (1877131 bytes). md5sum -c lam704sum to check for file integrity.
MPITB source and precompiled code for RedHat 8.0, MATLAB 6.5, LAM 7.0.2:
mpitb-RH80-MLAB65-LAM702.tgz (1877653 bytes). md5sum -c lam702sum to check for file integrity.
Companion README and TUTORIAL files

MPITB precompiled for MATLAB 6.1, RedHat 7.1, dynamic LAM libs: mpitb-RH71-ML61-dyn.tgz (1614431 bytes). MATLAB 6.x doesn't use the libc5 compiler environment.
Dynamically linked LAM-6.5.4 for RedHat 7.1: lam-6.5.4-1dyn.i386.rpm (1193026 bytes). Please, save the lam654sum file to the same subdir and type md5sum -c lam654sum to check for file integrity.
MPITB precompiled for Linux (RedHat 6.1): mpitb.linux.tgz (429432 bytes)
"Unofficial" RPM Package for LAM-6.3 under Linux libc5 (RedHat 6.1): lam-6.3-1.tcp.dyn.libc5.i386.rpm (1217874 bytes). Download only if you experience problems with lamboot under gnome-terminal.

  • A shared LAMHOME is strongly advised. 
  • A shared MATLABHOME is strongly advised. The sysop can then install the toolbox once for general use, under $MATLABHOME/toolbox. 
  • If not, make sure "matlab" is in your search path on each node. 
  • A shared HOME is strongly advised. The user can then install the toolbox once for all nodes, under $HOME/matlab. This is the preferred option.
  • If neither condition is satisfied, you may need to play with your .cshrc, .bashrc, run command scripts, or MPI_Comm_spawn_multiple. 
  • Gunzip & untar the toolbox. 
  • Adjust your MATLAB startup to run the provided startup script. 
  • Read the README file to check whether you forgot something. 
  • lamboot the LAM, run matlab, and work through the TUTORIAL to test the toolbox. 
  • Quit MATLAB, and halt LAM

page built February 2000 Last updated: Jan 9th 2008