![将多台旧电脑连接到局域网,构建一台简易的“超级计算机”](https://linux22.com/image/1293401/%E5%B0%86%E5%A4%9A%E5%8F%B0%E6%97%A7%E7%94%B5%E8%84%91%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%B1%80%E5%9F%9F%E7%BD%91%EF%BC%8C%E6%9E%84%E5%BB%BA%E4%B8%80%E5%8F%B0%E7%AE%80%E6%98%93%E7%9A%84%E2%80%9C%E8%B6%85%E7%BA%A7%E8%AE%A1%E7%AE%97%E6%9C%BA%E2%80%9D.png)
我正在开发一个简单但处理器密集型的计算机程序,用于科学研究。如果处理速度更快,那将非常有帮助。目前,我在 2 GHz Intel Core Duo 上运行 Mac OS X 10.5.7,我的程序运行速度非常慢。有一段时间,我在一台装有 Ubuntu 的相当老的笔记本电脑上运行它,运行速度快了约 20 倍。
我的想法是,我可以通过 LAN 连接一堆运行 Linux 的廉价二手 PC,并使用线程编程在计算机上分配处理负载。我的程序是令人尴尬的平行也就是说,核心数的线性增加应该会导致计算速度接近线性增加。此外,程序大小、内存要求和硬盘要求几乎为零,并且主程序(计算机之间)传递的信息量基本为零。
所以我想知道的是,实现这一目标可能会遇到什么样的障碍?它应该很简单还是没有?它会起作用吗?此外,在购买二手电脑时,我应该考虑哪些因素?就我的目的而言,双核 2GHz ~= 单核 4GHz 吗?我认为,根据经验法则,我应该选择我能找到的最便宜的多核处理器机器(最佳处理成本比)。
答案1
警告:这里的大部分知识都是理论性的,需要根据具体需求提供事实依据
您可能可以/应该设置一个集群。如果您要使用新系统,最便宜的多核系统听起来是个不错的选择(如果您使用旧系统避免PENTIUM IV,除非您想以比处理效率更高的效率加热房间。我认为双核 2 ghz 系统比单个 4 ghz 处理器略好,除非您有一个需要大量电力的单线程(而您不需要)。我要指出的是,一般来说,主流处理器的较新版本通常比它们所取代的版本更好,特别是最近因为电力使用已成为一个问题。如果我想深入了解它,我会研究各代处理器和它们的基准,以更清楚地了解效率和功率。
您可能需要考虑使用最小操作系统启动工作系统,通过网络使用 PXE 关闭标准映像,以节省每个单独系统的存储空间 - 由于您的 RAM 要求很小,您可以将整个操作系统放在 RAM 中,因为您只将它用于一件事
你可能需要有能够在集群上运行的软件(即,在设计时考虑到这一点 - 也许移动基础设施,设置集群软件等等。话虽如此,我见过大学里有大量的商用 PC 阵列连接在一起形成集群,所以这是可行的
另一方面,考虑到大规模并行化是你的主要目标,并且你正在处理大规模并行工作负载,你可能需要考虑 x86 集群的替代方案 - ubuntu 有一个48核心集群他们用 arm 开发板构建而成(我认为,一组 Raspberry Pi 系统会很有趣,而且非常高效,如果你不介意大量奇怪的小型廉价系统的话)。
答案2
Journeyman Geek 对如何设置自己的集群提出了非常好的观点,但我还想补充一点,根据你的工作量,使用类似弹性 Map-Reduce。 如果你的工作量可以转化为Map-Reduce您应该研究一下这个问题。考虑到购买计算机、电力、冷却和维护成本后,在亚马逊上运行它可能会更便宜(亚马逊最低标准层级每小时 0.10 美元,如果使用当前现货实例价格,每小时 0.045 美元))
如果您愿意付出更多努力,您可以使用自己的并行处理引擎,并以更便宜的价格使用微型实例(完整实例每小时 0.02 美元,当前现货价格每小时 0.007 美元)。亚马逊自己的 Map-Reduce 包无法在其上运行。如果您的进程受 CPU 限制,而不是受内存限制,那么这可能非常有用,因为微型实例比小型标准映像更快,但没有存储空间且 RAM 更少。
答案3
您可能需要考虑的另一个选择是运行程序博因。这具有现有系统的优势,该系统已经具有分配和收集“作业”的困难部分。这还允许您让更多人运行您的程序。如果您宣传得足够多,您可以让朋友甚至互联网上的随机人员运行您的程序。这使您能够拥有一个(可能)庞大的计算机集群来运行程序,而无需大量小型计算机的启动成本和持续的电力成本。
请注意,我从未在 BOINC 上编程过,因此你必须弄清楚这样做的难度。不过,对于一个入门平台,我认为不必重新发明 BOINC 所节省的时间将平衡使用它的复杂性