2014-08-28 88 views
2

在我们公司,我们使用.NET开发的自己的软件运行复杂模拟。这些仿真非常适合并行计算,我们目前大量使用.NET本身的各种多线程功能。即便如此,模拟通常需要数小时或数天。在本地网络上使用.NET设置分布式计算网格

我们希望探索通过本地高性能(24核)工作站网络来分配计算以获取更多CPU能力的潜力。但是我们在这方面没有经验。

在Google上搜索可以发现几种基于MPI的选项,如Pure MPI,MPI.NET以及一些商业软件,如Frontier。

我们应该考虑哪种解决方案适合.NET环境,并且相对容易设置?

谢谢!

回答

0

多线程!=网格计算,所以您将需要重写应用程序的某些部分,而不管您最终选择什么。

我不知道你的网络基础设施,但它听起来像我想,就像你想使用普通的桌面工作站来运行分发代码。我不会为此使用MPI。 MPI相当于网络支持高带宽和低延迟的集群和超级计算机。这些不是传统办公网络的属性(除非我了解错误)。

接下来要处理的事情是用户不应该在计算机上执行关机。没有网格计算平台(包括MPI)处理这些类型的问题,因为它通常运行在几乎没有故障并且全天候运行的服务器硬件上。

我不认为有一个简单和便宜的解决方案。你可以在每台机器上运行一个服务,它可以使用预定义的参数从DLL中执行代码并发送响应。这些程序集可以从一些windowsshare下载。但是你想要有这样的分配真正的巨大工作。如果应用程序只运行一分钟或更短时间,您几乎不会获得任何改进。

最后,你还需要一个服务来查找那些在线或不在线的服务,某种内存数据库,其中每个服务都可以写入IP地址并且它在线,以便客户端知道谁他们可以分发工作。这可以通过使用RavenDB(正如你所说的你正在使用.Net),Redis或实际上为这些问题编写的应用程序Zookeeeper来完成的。