I’ve tried using openmpi initially to program in MPI, however, it turned out that it currently doesn’t support spawning the processes on both Windows and Linux at the same time. I’ve took the .exe that they provide, and even if I had rsh configured properly to connect from Windows to Linux, it kept trying to connect to a DCOM object on Windows.

I eventually found this post describing that is not possible to mix the operating systems: “I’m afraid that currently Open MPI doesn’t have such feature to make
Linux and Windows work together”. And this discussion seemed to have taken place an year ago, Jan 2010.

So, while on the lookout for a heterogeneous MPI implementation, I found out about mpich2 – which seems to allow a cluster between Windows and Linux. While reading through the documentation, it becomes clear that you need a certain type of process manager being used to allow Windows – Linux communication; to activate it in Linux, you need to recompile mpich2 – as by default a different process manager is being used.

I’ve followed this advice from mpich2 mailing lists and below are the steps that I did.

All the commands should be ran line root.

Now we’re ready to configure the project before compiling. One thing, since this is a hobby project, I do not need (nor I do have) the Fortran compiler, and I had to disable it otherwise configure complained.
It also stopped after disabling Fortran with the message below:

After a bit of searching on Ubuntu’s forums, turned out I was missing the libssl-dev pachage.
Just to make sure, before configuring the project, execute:

The next steps are to configure the project and after it finishes, start the build process:

If everything went ok, you will see a message like:

A make install is needed to install everything, and you will find the compilers in /usr/local/bin.
Before compiling the first project, smpd has to be started (and it will ask you a passphrase which you have to give. It offers to save it in your folder in .smpd file which you should accept).

Then you can proceed compiling and running the code.

PS: I liked the cleanness of mpich2 compiling process, a straightforward process without headaches.