![通过局域网的超级计算机](https://linux22.com/image/1393041/%E9%80%9A%E8%BF%87%E5%B1%80%E5%9F%9F%E7%BD%91%E7%9A%84%E8%B6%85%E7%BA%A7%E8%AE%A1%E7%AE%97%E6%9C%BA.png)
如果我决定通过直接 LAN 连接并行两台计算机,LAN(100 Mbits/s)总线带宽是否足以让 CPU 进行通信而不会造成性能损失?还是我必须使用其他总线(可能是 USB)?谢谢。
更新
我想在低功耗计算机上运行资源依赖型应用程序。主要思想是将执行的代码拆分为代码部分,这些代码部分将发送到集群中的机器并由它们执行。有些管道无法并行化,但也存在无序执行和很可能并行运行的线程。
答案1
首先,我认为 CPU 之间不会相互通信。你的程序定义了要向其他 PC 发送什么。
当然,这取决于您要完成的任务。个人电脑是否可以处理不需要其他人访问的数据?
另一个重要问题是:它有多少数据?示例:
- 破解密钥,你只需要传输密钥(512 位),传输只需几毫秒,处理则需要几分钟。没关系。
- 如果您要渲染 3D 场景,则需要传输所有图片和对象信息。每个场景可能占用 200 MB(传输时间为 15 秒),处理时间约为 1 小时。也还好。
- 如果您需要 1 GB 的数据(传输需要 76 秒)但计算可以在 30 秒内完成,那么这是不值得的。
数据大小的经验法则:如果传输数据的时间比计算数据的时间长,那么可能就不值得。如果您有多台 PC,请将带宽除以客户端数量。
答案2
联网超级计算机只适用于您可能需要执行多个独立任务的情况。此外,如果您首先需要一台超级计算机,那么您肯定需要巨大的带宽来传输数据,因此 100MB 的 LAN 是不够的。
以下是一个简单的 wikiHow 来构建一个http://www.wikihow.com/Build-a-Supercomputer
但我要提醒你,这并不像听起来那么简单。你还需要修改和重新编译要运行的程序,使它们模块化,以及做其他无数的事情。