【问题标题】:Setting up a distributed computing grid on local network using .NET使用 .NET 在本地网络上建立分布式计算网格
【发布时间】:2014-10-22 12:01:27
【问题描述】:

在我们公司,我们使用我们自己在 .NET 中开发的软件运行复杂的模拟。这些模拟非常适合并行计算,我们目前大量使用 .NET 原生的各种多线程特性。即便如此,模拟通常需要数小时或数天时间。

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

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

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

谢谢!

【问题讨论】:

    标签: distributed-computing


    【解决方案1】:

    多线程!= 网格计算,因此无论您最终选择什么,都需要重写应用程序的某些部分。

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

    接下来您必须处理的事实是,如果对他们执行计算,用户不应该关闭他们的机器。没有任何网格计算平台(包括 MPI)可以处理此类问题,因为它通常运行在几乎没有故障且 24/7 运行的服务器硬件上。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2019-06-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多