Если вы делаете это на 1 сервере, вы можете просто выполнить один процесс и выполнить код параллельно. Таким образом, вы могли бы делить память проще и быстрее, чем делать это с помощью сообщений типа MPI и WCF. Хотя издержки на общение могут быть не такими большими, в зависимости от вашей проблемы + решения.
Кроме того, изменения в вашем коде будут намного меньше, F # обычно можно превратить в параллельный код без особых усилий. Переход на MPI / WCF потребует от вас переписать большие порции.
Поиск в Google для параллели F # + дает много полезной информации, которую вы должны прочитать в первую очередь, например, для хорошего начала:
http://blogs.msdn.com/b/dsyme/archive/2010/01/09/async-and-parallel-design-patterns-in-f-parallelizing-cpu-and-i-o-computations.aspx
Так что на 1 сервере я буду использовать параллельные функции F #, он предназначен для простого распараллеливания.
Позже, когда вы захотите перейти в облако, это превратит его в cleint-сервер. Это другая проблема, чем парализация. Я бы лечил и решал их отдельно.
На MPI против WCF. WCF разработан как технология RPC, то есть вы вызываете удаленные процедуры и получаете ответы. Если вы хотите использовать его для параллельного программирования с отдельными процессами, вам придется создать шаблонный код для этого. (Следите за подписанными клиентами и т. Д.)
MPI был разработан для работы с такой архитектурой и упрощает ее обработку. (первый процесс получает номер 0 и является ведущим, остальные - рабами нумеруются постепенно и т. д.)
Как бы то ни было, я не думаю, что MPI будет очень хорошо работать в облаке, поскольку это включает http, протоколы, безопасность и т. Д. Не уверен, насколько хорошо MPI работает для такого рода вещей, WCF действительно справится с этим очень хорошо.
Тот факт, что существует MPI.NET для WCF, заключается в том, что MPI - это определенный стиль парализующего кода, с которым многие люди знакомы. Таким образом, вы можете использовать концепции программирования и использовать их на платформе .NET, используя WCF для коммуникации.
Если вы хотите обмениваться большим количеством данных по проводам, вам может понадобиться еще кое-что - протокол-буферы (см., Например, protobuf-net ). Это можно легко комбинировать с WCF для связи и очень легко сериализировать структурированные данные, чтобы вы могли эффективно передавать по проводам.
Герт-Ян