MPI.NET is a high-performance, easy-to-use implementation of the Message Passing Interface (MPI) for Microsoft’s .NET environment. MPI is the de facto standard for writing parallel programs running on a distributed memory system, such as a compute cluster, and is widely implemented. Most MPI implementations provide support for writing MPI programs in C, C++, and Fortran. MPI.NET provides support for all of the .NET languages (especially C#), and includes significant extensions (such as automatic serialization of objects) that make it far easier to build parallel programs that run on clusters.
MPI.NET has been developed by the research staff at Indiana University in collaboration with Microsoft. Developers leverage the "Windows HPC Server 2008 SDK" in tandem with the MPI.NET SDK to build MPI.NET applications. An MPI.NET runtime component must be installed onto Windows HPC Server 2008 based clusters to host MPI.NET applications.
.NET application developers will be familiar with the following syntax representing a minimal "hello world" MPI.NET application. MPI.NET enables interesting new solutions to be developed which hide much of the complexity of native MPI application development. For example, F# language developers may now implement designs leveraging the concurrency management advantages of F# with the scale and parallel domain advantages of MPI.
static void Main(string args)
using (new MPI.Environment(ref args))
System.Console.WriteLine("Hello, from process number "
+ MPI.Communicator.world.Rank.ToString() + " of "
- The main research page at Indiana University: http://www.osl.iu.edu/research/mpi.net
- MPI.NET API reference page: http://www.osl.iu.edu/research/mpi.net/documentation/reference/1.0.0/Index.html
- A tutorial for developers using C#, Python, and other languages: http://www.osl.iu.edu/research/mpi.net/documentation/index.php