Question

I would like to know if MPI.NET + Mono framework can be used to run distributed computations on supercomputer nodes that are all Linux based?

I know that Mono run-time is available on the clusters and mono compiled programs with standard libraries run fine. But what about MPI.NET ?

And one more question, I am a bit confused with the difference between MPI.NET and MPIch2 etc. Is MPI.NET a wrapper around standard MPIch2 and works on Linux if MPIch2 is available? or is it an alternative to MPIch2 and requires installation of MPI.NET clients?

I highly appreciate your inputs on this if you have had any experience base upon this.

Thank you.

Was it helpful?

Solution

I finally found the answer to some of the questions from MPI.NET website on this matter. I quote:

  1. Does MPI.NET work with other MPI implementations? It depends on the platform. Even though MPI is a standard, on Windows MPI.NET encodes some information about specific data types used in MS-MPI that tie MPI.NET directly to Microsoft's MPI. It is certainly possible to make MPI.NET work with other MPI implementations, but we do not currently plan to do so. On Unix, however, MPI.NET adapts itself to the native MPI detected at configure time, and can work with (at least) Open MPI, LAM/MPI, and MPICH2

  2. Does MPI.NET work with Mono? Yes! As of version 0.6.0, MPI.NET works under Mono using a variety of different native MPIs, including Open MPI, LAM/MPI, and MPICH2. Note, however, that problems will run-time code generation in Mono cause MPI.NET to be slightly more conservative in its optimizations. Due to this more-conservative approach and the fact that the Mono JIT has not received as much tuning as the Microsoft JIT, we expect that performance on Mono will not be as good.

for more info please visit: MPI FAQ

additionally, here's a link on how to compile MPI.NET under Ubuntu: Compiling MPI.NET under Ubuntu Oneiric

OTHER TIPS

Before I start, when you have multiple questions, you should post them separately. I don't know the answer to the first part of your question, but I can help you with the second. This means that if you like my answer and one other, you can't accept both. Anyway, on to the second half of your question.

MPI.NET is an MPI implementaiton that seems to run on top of Boost MPI. This means that it probably doesn't implement the low level communication calls themselves, but instead has bindings for .NET that allow you to call Boost MPI from any of those languages. If you don't have both installed, it won't work.

MPICH (the project isn't called MPICH2 anymore) is a separate implementation of the MPI standard that does provide everything necessary at all levels of the stack to run on most systems. It provides all of the standard required language bindings (C, FORTRAN, and C++ which is deprecated). The two projects are separate and as far as I know, you can't use MPI.NET on top of MPICH.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top