Next: Review of the HPJava
Up: C#
Previous: C#
Contents
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: Review of the HPJava
Up: C#
Previous: C#
Contents
Bryan Carpenter
2004-06-09