可以合并两台计算机的处理能力吗?

可以合并两台计算机的处理能力吗?

有几个问题请教一下,还望大家赐教。

  1. 可以合并两台计算机的处理能力吗?
  2. 我该怎么做?

答案1

不透明的是,正在运行的程序可以以某种方式使用第二台机器来执行代码,因为它们在逻辑上是分开的,CPU 无法通信或访问彼此的内存。

这并不意味着你不能结合处理能力:

  1. 特定软件可能具有可以在其他机器上执行的组件,例如蛋白质折叠、SETI @ home。这些往往是专门的,即您无法启动 Excel 并告诉它使用另一台计算机进行计算。
  2. 如果您正在执行处理器密集型任务,则可以使用辅助机器来运行它们,例如对视频流进行编码/重新编码。

如果您希望以任何方式利用辅助计算机,那么能够远程控制它是至关重要的。实现这一点的两种方法是通过某种远程访问(RDP、VNC)或 synergy+ 之类的东西。

答案2

如果您正在寻找一种将两台 PC 的处理能力合并为一台的方法,那么“最简单”的方法是使用 VMWare ESXi 等软件将它们都配置为虚拟机主机(请注意,这将要求设备具有兼容的硬件),并创建资源组或集群,并创建使用两台计算机资源的虚拟机。这不会让您获得完整的 2 倍速度(您会因虚拟化而损失资源),并且由于可能的兼容性要求,它是一种有限的解决方案,但它是对您的问题最“正确”的答案。虚拟机将像一台 PC 一样运行,具有两台主机的处理能力,减去维持虚拟化所需的开销。

答案3

我最常用的一句话是“是和否!”

是的,这是可能的 - 对于某些设计为以这种方式工作的应用程序。(通常称为集群 -更多阅读请点击此处

不,这是不可能的(至少据我所知)将两台现成的计算机“连接”在一起并获得组合的内存、处理能力和其他一切。

答案4

我同意其他答案:

  • 如果您有一个巨大的、多页的 Excel 工作簿,并且您希望能够以两倍的速度运行 Excel(更新公式和场景、运行宏等),那么您就没有那么幸运了。
  • 如果您有一个易于分区的自定义应用程序,例如查找从 1 到 1,000,000 的每个整数的平方根,那么您应该可以轻松地将问题分解成几部分并分配它们。
  • 如果您有一个自定义应用程序,例如计算 π (pi) 的前 1,000,000 位数字,并且您对问题空间有足够了解,您也许能够做到。

如果您正在谈论开发在分布式(多计算机)环境中运行的软件,这里有几点建议:

  • 使用远程过程调用 (RPC)就像您可以将主机变成文件服务器或 Web 服务器一样,RPC 允许您将机器(本质上)变成 CPU 服务器。从概念上讲,您将拥有一台主机,它将是 RPC 客户端,它将调用在服务器上透明执行的库函数。在最简单的形式中,这种架构不会给您带来任何性能优势,因为在任何时刻只有一个 CPU 在执行。但是,在异步模型中,客户端可以在服务器上启动远程过程,然后在服务器运行时执行其他操作。
  • 使用专为并行处理而设计的语言,例如统一并行 C (UPC)。这是 C 语言的扩展,具有分布式数据和同时执行的功能。参考文献:
  • 统一并行 C 页面在乔治华盛顿大学。
  • GNU UPC 工具集页面
  • Intrepid/GUPC:GNU UPC 统一并行 C(GitHub 页面)

相关内容