是否有可能从多台电脑创build一个更快的电脑?

我的下面的post是(我认为相当不公平)closuresStackOverflow因此我重新发布在这里。

原问题:如何使用多台电脑创build更快的环境? 我有大约12台电脑,每个4GB,每个2GHz。 我需要运行一些耗时的数据转换,并希望使用这些机器的组合力量。 他们都运行Win2003服务器。

基本上我们有大量需要转换的video文件,所以我们的分析师可以做他们的分析。 这个问题很复杂,我不能告诉你更多关于这个项目的事实。

原帖: https : //stackoverflow.com/questions/1126710/is-it-possible-to-create-a-faster-computer-from-many-computers

你在问什么是今天计算中一个主要问题的关键。 单个处理内核不会变得更快,所以我们需要程序员开始编写代码,将更大的问题分解成可以在多台计算机上并行处理的小问题。

对你来说简短的答案:如果你的处理软件允许你拆分工作,并行运行它们,那就这样做。 如果不是这样,那就和那些写这个东西的人谈谈,让他们重新工作,以更平行的方式工作。

将数据输出到各台计算机,启动并行任务,确保作业真正完成以及将数据返回的机制是其他海报提及的群集pipe理软件的一大特色。 涉及到一些不平凡的问题,但总的来说集群pipe理软件是关于作业调度和资源pipe理的。 集群pipe理软件并没有处理实际的并行工作 – 这就是你的“处理软件”所要做的。

没有什么“魔法”,你可以扔在一组多台电脑,使他们“像”一个更快的机器。 你不会摆脱这种没有多个处理器的软件。

为了结合多台机器的处理能力,你需要运行某种集群软件,通常称为计算或计算集群。 可以做到这一点的应用程序的一些例子是:

  • 微软计算集群
  • Windows高性能群集
  • Beowulf集群

然而,这些软件是复杂的,创build一个可用的高性能集群是一项复杂且潜在的昂贵工作,不应该轻易进行。 你也需要专门的软件,可以运行在一个集群上做你的工作。 你不能简单地连接一堆Windows电脑,神奇地build立一个集群,并在其上安装一个标准的Windows应用程序。

当你可以说,一群电脑运作良好。

我可以让每个人坐在一台电脑上,解决问题的一部分吗?这会加快速度吗? 换句话说,问题可以分解成基本上独立的块吗?

鉴于您将问题描述为“大量要转换的video文件”,是的,这可以在群集上运行。

微软有集群软件,我什么都不知道。 这可能是要走的路。

可能更容易的是:

把一台电脑当成主人。 其余的都是客户。

把所有的video文件放在这个主文件夹中。

为每个客户端创build一个共享文件夹并让每个客户端都安装该共享文件

客户端运行一些windows脚本语言(Perl会工作),每隔一段时间就会醒来,如果共享文件夹中有东西,将其重命名为work_yourfilename,然后运行变换。 完成后,将其重命名为done_yourfilename。 如果没有,只需等待60秒左右。

主计算机运行一个查看每个共享文件夹的脚本。 如果他们什么都没有,那么把一个文件进行转换。 如果他们有一个名为done_yourfilename的文件,则将其移至done文件夹。 循环直到主文件夹中没有任何内容。

基本上所有的客户端都应该尽可能地忙碌,每个客户端都要花时间去转换每个文件。

这是可能的,但是在构build集群中会涉及相当多的工作。 没有更多的信息很难说更多

你的问题的答案在很大程度上取决于你用来“转换”这些video文件的软件,以及需要的软件。

Adobe After Effects有一种群集模式,他们称之为“networking渲染”,但这不是一个理想的解决scheme。 (上次我检查过,包括把你的video渲染到一个想象的序列 ,这可能需要重新组合成一个video供你使用)

这个基本的想法是将电影分成块,并获得一个不同的PC在每个块上工作:

  • 应该有一些命令行video编码工具,可以select只处理一定范围的帧; 这可以自动分裂。

  • 每个块可以被复制到一个不同的共享文件夹(很容易自动化)

  • 您的“农场”中的每台PC都将查看这些共享文件夹中的一个,以便转换源video。 (很简单,假设转换的软件有一个“看文件夹”的function,但是batch file/ shell脚本可能会被这样操作)

如果不知道video“转换”的性质,您正在使用的是什么软件,或者您所处的脚本/编程级别,将不可能进一步评论。

你所“创造”的不是“更快的电脑”,而是一个集群 。 这不过是一组电脑一起使用而已。

IOW,你所要做的就是创build一些程序在你的每台计算机上运行,​​并执行部分问题。

在你的具体情况下,你有很多文件要转换。 如果每个文件都可以独立于其他文件进行转换,那么很容易:将它们分发到机器中,并把它们全部转换成自己的文件。

正如其他人所说,这取决于你想要做什么,以及如何直接执行。

Amdahl定律和Gustafson定律描述了执行分布在更多处理器上的加速量。

你有没有考虑过Hadoop? 使用Hadoop,您可以像使用多台机器一样运行批处理作业。

http://hadoop.apache.org/

这个星球上最大的计算机大部分都是由许多独立节点组成的大型集群,每个节点通常都是标准的服务器。

请参阅http://www.top500.org/ ,特别是按架构分类: http : //www.top500.org/stats/list/33/archtype 。