在我们公司,我们使用我们在.NET中开发的软件进行复杂的模拟。这些模拟非常适合并行计算,我们目前大量使用.NET原生的各种多线程功能。即便如此,模拟通常需要数小时或数天。
我们希望探索在我们的本地高性能(24核)工作站网络上分配计算以获得更多CPU能力的潜力。但是我们没有这方面的经验。
在Google上搜索会发现一些基于MPI的选项,例如Pure MPI,MPI.NET,以及一些商业软件,如Frontier。
我们应该考虑哪种解决方案非常适合.NET环境并且相对容易设置?
谢谢!
答案 0 :(得分:0)
多线程!=网格计算,因此无论最终选择什么,您都需要重写应用程序的某些部分。
我不知道您的网络基础设施,但它听起来像我想要使用普通桌面工作站来运行分发代码。我不会使用MPI。 MPI是针对集群和超级计算机开发的,其中网络支持高带宽和低延迟。这些不是传统办公网络的属性(除非我理解错误)。
您需要处理的下一件事是,如果对其执行计算,用户不应关闭其计算机。没有网格计算平台(包括MPI)处理这类问题,因为它通常在服务器硬件上运行,几乎没有故障并且全天候运行。
我认为没有简单而廉价的解决方案。您可以在每台计算机上运行一个服务,该服务可以使用预定义参数从DLL执行代码并发送响应。这些程序集可以从一些窗口共享下载。但是你想要像这样分配真正巨大的工作和平。如果应用程序仅运行一分钟或更短时间,您几乎不会获得任何改进。
最后,您还需要一项服务来查找那些在线或不在线的服务,某种内存数据库中每个服务都可以写入IP地址并且它在线,以便客户知道他们是谁可以分发工作。这可以使用RavenDB(正如你所说的那样使用.Net),Redis或实际为这类问题编写的应用程序,Zookeeper来完成。