我想建立自己的私人计算云,或者所谓的网格。
我可以进入拥有大量快速计算机的 IT 教室,我想利用这些强大的功能。(或者甚至同时使用家里的 3 台小型计算机执行相同的任务。)
像虚拟机这样在所有 CPU 核心上分布运行的东西会很棒。这样我就可以拥有一个运行着 ~40GB RAM、~120GHz 有效频率和大量存储空间的单一(虚拟)操作系统。我知道网络会减慢一切速度,但如果由于网络速度慢(尽管每台机器都是 1 Gb/s)而导致这种“资源合并”不值得,那么像 BOINC 这样更小更简单的程序也可以做到这一点。它可以将工作单元分配给本地节点进行处理。
我希望它是免费的,也许是开源的,并且可以在 Windows 和 Linux 节点上运行。
如果没有简单的方法,我是否可以实现自己的专用于每项计算的协议(可以是任何内容,从国际象棋 AI 到光线追踪,从分形渲染到 PI 计算)?或者使用 BOINC?
我看过 Eucalyptus,但我认为那会有点过头。BOINC 不也是这样吗?
是否有人可以推荐我一些好的软件来帮助我实现这一目标?
答案1
我将运行一个单一的(虚拟)操作系统,其内存约为 40GB,有效频率约为 120GHz,还有大量的存储空间
如果没有定制硬件或软件,它就无法实现。它之所以无法实现,是因为与任何给定 PC 内的互连速度相比,您的“快速” 1GbE 链接速度非常慢。以下是几个示例:
- PCI——2Gb/s
- AGPx8——34Gb/s
- PCIex8——16Gb/s
- PC2-5300 内存 - 85Gb/s
- CPU L1 缓存 ~300Gb/s
现在,您可以单独执行您提到的几项单独操作。例如,有分布式计算应用程序,如 BOINC/SETI@Home,当然,它们依赖于具有高并行性的工作负载(可以单独处理并在以后合并)。还有分布式存储应用程序,如 Bittorrent/Brancecache。
如果你有特定的工作量需要处理,并且需要编程能力,请查看Beowulf 聚类。
这里要理解的一个非常重要的概念是组件之间的距离如何影响它们之间较慢的数据传输。这是计算的基本原理,可以解释很多事情,包括对你问题的回答。简而言之 - 两个组件之间的距离越远,它们的最大通信速度就越慢。考虑一下 L1 缓存与 RAM 相比有多快,然后与硬盘相比。这是它与核心距离的直接函数。
答案2
这个问题很宽泛。一般来说,在多台计算机上运行单个通用操作系统是并行/分布式计算的圣杯,但目前还没有以任何有意义的方式实现。如果你的问题域很容易并行化,那么有很多解决方案可以解决你的问题,包括 Condor 等批处理调度系统和 Eucalyptus、Hadoop 和 Beowulf 等集群方法。如果它不容易并行化,那么你就需要进行大量的算法思考。因此,对于任何给定的问题空间,
- 你能把工作分成很多小部分吗?
- 各个工人之间是否需要互相沟通,还是只需要与调度员沟通?
- 独立的工作者是否需要访问彼此的内存空间?