Welcome to the web pages for TOMPI, a Threads-Only
MPI Implementation written by
Erik Demaine. TOMPI is
designed to run MPI programs on a single computer, either a single processor or
an SMP. It is designed to be efficient in this environment, allowing effective
testing, debugging, and tuning of parallel programs on a workstation.
Typically, you can get 100,000+ processes using user-level threads (depending
on the stack size you choose), and 512 processes using system-level threads.
Experimentally, the slowdown is sub-logarithmic (for example, running 1,024
processes on the same problem is under ten times slower than the serial
TOMPI uses threads to minimize communication and context-switching overhead.
It is specifically tuned for a workstation environment. Current
implementations like MPICH do not work well in such an environment. Even the
implementations that use shared memory (like MPICH's
device) also use polling, which makes scalability impossible. See the paper
below for a detailed comparison.
Papers and Documentation
For those interested in further motivation, implementation details, and
experimental results, see the
The documentation page contains installation
instructions and a user guide.
Some frequently asked questions and their answers
TOMPI currently supports Solaris threads, the latest POSIX threads,
and should be easy to port to other threading systems. It has been tested on
AIX 4.1-4.2 and Solaris 2.4-2.6. Currently, it does not support all of MPI.
Most point-to-point communication and some collective communication is
available. If TOMPI does not support your needs, send a feature request.
TOMPI is freeware. If you use it in a research or commercial project, you must
acknowledge the software and its author. I would also appreciate it if you
contact me -- I would like to know how TOMPI is used. If you base code on
TOMPI, you must acknowledge that fact. Again, please let me know if you think
your changes would be at all useful to the rest of the world. (Even if you are
not willing to share it, the ideas may be useful.)
You can download the latest version
(0.1.1), released March 20, 1998. Please note that it has not been
throughly tested and does not support all of MPI (see the
list of supported MPI concepts).
See also details on this and other releases.
Please send any comments, suggestions, criticism, or (perish the thought) bug
reports to email@example.com.
Also, send me e-mail if you want to be informed of future updates.
(translated into Estonian)