Parallel Apples and Oranges?

By Matthew Dublin

Cluster computing sage Douglas Eadline has a good post breaking down the differences between two ways to express parallelism: the applications programming interface MPI (Message Passing Interface), the staple of all HPC programmers, and OpenMP, a compiler extension. With minimal head scratching, both can be used to take advantage of multi-core processors and achieve parallelism with your programs. Doug's post breaks down some of the myths and confusion surrounding both tools. He says that for the most part, MPI is fairly straightforward although things can get hairy when debugging, monitoring, and starting MPI programs across clusters versus running these programs on a single server. For these problems, and many other challenges, Doug provides some great links to tools to help deal with these challenges for both MPI and OpenMP.

This post is not a tutorial however, so for some tips and walkthroughs, check out Joe Landman's articles over at Linux Magazine that promise to get you running either parallel environment in under an hour. Go check out MPI In 30 Minutes and OpenMP in 30 Minutes. Both have links to source code.

For those Windows HPC Server 2008 folks out there, don't be discouraged. In case you missed it, earlier this month HPC compiler vendor The Portland Group released PGI Visual Fortran Release 9.0 for Windows workstations, servers, and clusters. This is the first general release to include to support for debugging Microsoft MPI Fortran applications within the Microsoft Visual Studio development environment.

MPI is certainly the dominant

MPI is certainly the dominant legacy method for distributed memory parallel programming. However, there are newer alternatives that are a lot more user-friendly. The draft Fortran 2008 spec includes coarrays, which provide a mechanism to write code using the MPI programming model, but with syntax directly in the language instead of calls to library routines. UPC is a C-like language that provides essentially the same capability. Use of these new language facilities is mostly limited to the HPC arena today, but I expect they will trend "down market" in the future as compiler support improves and user awareness increases.