有没有简单的解决方案在.NET中分配计算工作?

时间:2011-01-09 22:00:53

标签: c# .net distributed-computing

因此,假设我家里有一些电脑。

我们还要说我想要运行一些算法,这通常需要花费很多时间来解决。它可以分为我想要多少部分,所以我可以在一台机器中运行它的一部分,在另一台机器中运行它的一部分等等,最后我只需要将结果合并到一台计算机中。 / p>

我的问题是,如果在.NET中使用多台计算机进行这种计算有任何简单直接的方法。如果是,它是如何调用的?我并不是说必须自己编写所有IPC代码,类似于BCL的任务,但这允许我通过IP或其他东西将“工作”发送到其他计算机。

谢谢!

4 个答案:

答案 0 :(得分:7)

在一般的分布式计算中,有两种模式:消息传递和共享内存

听起来您对Message Passing感兴趣,因为它通常涉及通过网络进行通信的多台计算机。共享内存使用内存系统在进程之间进行通信。从我在分布式计算方面的(有限)经验来看,几乎每个使用Message Passing作为模型的人都转向了MPI。 MPI是一个以多种语言实现的框架。那里有一些非常强大的.NET MPI实现。

这篇文章假设您在HPC场景中正在进行“分布式计算”。在这种情况下,您将拥有许多功能强大的计算机,通过互连网络连接在服务器机房(或类似)中。如果您正在寻找分离的物理机器之间的某种分布式计算(例如折叠@home),您需要找到其他东西或推出自己的解决方案。因此,正如Leniel Macaferi在回答中提到的那样,您需要确保您的数据中心正在运行某些版本的Microsoft HPC Server。大多数HPC集群都运行一些linux,这显然会阻止你部署基于.NET的解决方案。

答案 1 :(得分:3)

这是Microsoft HPC Server发行版的完美匹配,因为它专门针对这种情况进行了调整。

我不知道任何可以纯粹基于.NET的事情。当然这是可能的,但需要一些编码。

虽然不是您想要的,但我建议您阅读.NET Task Parallel Library,以帮助您快速,轻松地在计算机的可用CPU(核心)上自动分配工作负载。

与分布式计算相关的有趣文章:

C# Remoting and Distributed Computing

Legion: Build your own virtual super computer with Silverlight

Windows Communication Foundation (WCF)

答案 2 :(得分:1)

微软在他们的研究实验室中有一个Map减少Linq的实现称为Dryad Linq(目前测试版只在HPC服务器上提供),但这看起来非常有趣并且可以满足您的需求。

答案 3 :(得分:0)

Microsoft HPC Server需要服务器操作系统。从它的声音来看,你没有运行服务器操作系统。假设您运行的是安装了.NET 4.0的Windows桌面版,您可以尝试以下选项之一:

  1. 您可以手动拆分工作并手动执行这些部分。

  2. 您可以使用MPAPI来编写自己的节点和工作人员。

  3. 您可以编写控制台应用程序并使用DuoVia.MpiVisor在工作站上分发和执行。 (完全披露:我是MpiVisor的作者)

  4. 以一种随意的方式进行分布式计算并不是一件容易的事情,但是这两个选项中的任何一个都应该让你在那里。

相关问题