MMPI News
Google Code
I've officially transitioned all the active development to this new code.google.com site and I'll be moving the rest of the documentation and example code here over the next few weeks. In the meantime, you can use anonymous SVN access to get the most recent source or download one of the 'stable' source distributions directly from this site.
If you haven't updated your MaroonMPI in a while I've made a number of bug-fixes and updates and so it should be well worth upgrading to the latest version as soon as possible.
If you run into any problems feel free to e-mail or submit a bug report (on the 'Issues' page of this site).
Release 1.1!
What's new?
- new improved 'pythonic' interface
- Improved support for the new Numpy array implementation
- Bug fixes to support the OpenMPI implementation
- MPE Logging Support(i.e.:Jumpshot)
Thanks again to the folks who have sent me e-mails with problems, questions, and encouragement. Keep 'em coming!
About MMPI
MMPI ( pronounced 'Mmmm, PIE!', is also an acryonym for the 'Maroon Message Passing Interface' ), a Python extension module that provides a simple interface to the MPI library. MMPI builds as a single CPython extension module (a shared library) and is extended by a number of easy to modify Python files. MMPI installs like many other Python modules using a single setup.py script.
The goal of MMPI is to create a straightforward interface to MPI that can be easily modified and extended by users to suit their needs. MMPI allows the user to choose from a number of ways to invoke MPI functions. By default, MMPI provides a straightforward translation between C/Fortran MPI calls and the new Python calls. The hope is that experience with C/Fortran MPI programming can be leveraged when writing Python MPI, and that new MPI programmers can learn using Python MPI and use their Python experience to write MPI code in other languages.
MMPI currently supports numbers, lists, tuples, and Numeric (Numpy, ScipyCore) Arrays. You can also serialize and ship arbitrary objects although support for them is somewhat hackish. However, numbers and arrays are most likely what will be interesting in parallel Python codes. Also worth noting is that MMPI does not make copies of Numeric arrays, so you won't waste time.
A recent addition to MMPI has been support for Asynchronous I/O (nonblocking sends and receives, wait, test, etc ). This is particularly useful for running examples at the interpreter or on a single processor. Additionally non-blocking I/O enables you to more easily overlap communication and computation.
MMPI is being produced largely by me(Mike Steder), and is being developed as part of an ongoing project at the University of Chicago's Climate System's Center. MMPI is still under development. The 1.0 release supports the core MPI functions, such as send, recv, comm_split, barrier, bcast, reduce, etc. Support for graphs, cartesian communicators, and non-blocking collective operations are planned for future versions (1.1/1.2, etc).
Downloading MMPI
The most recent version of MMPI was released October 16th, 2006. Click one of the following links to download MMPI directly from this site:
Current MMPI in gzip'd tar'd format: mikempi-current.tar.gz Current MMPI in bzip2'd tar'd format: mikempi-current.tar.bz2 Current MMPI in zipfile format: mikempi-current.zip Browse for a specific version of MMPI . Getting Help (Questions and Comments)
If you are using MMPI, or looking to use it, I'd love to hear from you. I'm interested in how you're using MMPI and whether I can do anything to make it more usable. If you are looking to extend MMPI (either to provide another interface you prefer or additional MPI functionality) I would be happy to include changes into my version.
I'm available via e-mail if you have problems building MMPI or run into bugs using it.
Happy Hacking!
© m. steder (2007)