If you do this on the same server, you can simply execute one process and execute the code in parallel. That way, you could share memory more easily and faster than with messages like MPI and WCF. Although the communication overhead may not be the same, depending on your problem + solution.
In addition, the changes in your code will be much smaller, F # can usually be turned into parallel code without much effort. Switching to MPI / WCF will require rewriting large portions.
Googling for F # + parallel provides a lot of useful information that you should read first, like this for a good start: http://blogs.msdn.com/b/dsyme/archive/2010/01/09/async-and-parallel -design-patterns-in-f-parallelizing-cpu-and-io-computations.aspx
So, on 1 server, I will use F # parallel functions, which are intended for simple distribution.
Later, when you want to go to the cloud, this will turn it into a cleint-server. This is another problem, and then paralysis. I will relate to them and solve them separately.
In MPI vs WCF. WCF is designed as an RPC technology, i.e. You call remote procedures and get answers. If you want to use it for parallel programming with separate processes, you will need to create boilerplate code for it. (Keep track of subscribers, etc.)
MPI was designed to work with such an architecture and is easier to deal with. (the first process gets number 0 and is the leader, the others - subordinates, which will be numbered, etc.)
No matter how I think that MPI will be very good to the cloud, as it is related to http, protocols, security, etc. Not sure how well MPI works for this kind of thing, WCF will do it very well.
The fact that there is MPI.NET for WCF is that MPI is a specific style of paralysis code that many people are familiar with. This way you can use programming concepts and use them on the .NET platform using WCF for communication.
Something else you might want to peek at if you need to exchange a lot of data over the wire, these are protocol buffers (see protobuf-net for example). It can be easily combined with WCF for communication and very poorly serializes structured data so that you can efficiently send by wire.
Geert Yang