next up previous contents
Next: Review of the HPJava Up: C# Previous: C#   Contents

MPI with C#

The MPI binding of the C# language and the CLI [54] has been developed by the Open Systems Laboratory at Indiana University. Two levels of language bindings are presented. A set of C# bindings to MPI is a low-level interface similar to the existing C++ bindings given in the MPI-2 specification. The other library called MPI.NET is a high-level interface. This interface integrates modern programming language features of C#. The C# binding is relatively straightforward. Each object of C# bindings contains the underlying C representation of the MPI object. Similarly, the high-level objects in the MPI.NET are usually containers of underlying MPI objects. Both the C# binding and MPI.NET libraries are built on top of a native implementation of MPI. The P/Invoke feature of CLI is used to bind lowest level of both libraries to the C MPI functions. A P/Invoke is a mechanism to create direct interface to existing libraries written in C and C++ in the .NET programming environments. Since the MPI.NET binding uses language features of C#, it has unique features. The MPI.NET uses a feature of C# properties. This feature allows to access a field of object more conveniently by providing special syntax like method. This feature simplifies interface of information like rank of the current process or number of nodes. Unlike the C# bindings, automatic pinning and unpinning of user defined data is also provided in the MPI.NET binding. A more minor difference is the C# bindings try to follow naming convention of MPI C++ bindings and the MPI.NET library tries to follow C# naming convention. According to [54], performance of the current MPI binding of the C# and the CLI is slightly slower than our MPI binding to Java (mpiJava).
next up previous contents
Next: Review of the HPJava Up: C# Previous: C#   Contents
Bryan Carpenter 2004-06-09