![是否可以准备一个环境,使应用程序将其视为具有更多核心,其他 LAN 主机的分布式/并行核心?](https://linux22.com/image/195651/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%87%86%E5%A4%87%E4%B8%80%E4%B8%AA%E7%8E%AF%E5%A2%83%EF%BC%8C%E4%BD%BF%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%B0%86%E5%85%B6%E8%A7%86%E4%B8%BA%E5%85%B7%E6%9C%89%E6%9B%B4%E5%A4%9A%E6%A0%B8%E5%BF%83%EF%BC%8C%E5%85%B6%E4%BB%96%20LAN%20%E4%B8%BB%E6%9C%BA%E7%9A%84%E5%88%86%E5%B8%83%E5%BC%8F%2F%E5%B9%B6%E8%A1%8C%E6%A0%B8%E5%BF%83%EF%BC%9F.png)
我有 4 台电脑,它们都有 8 年以上的历史。我可以通过 LAN 电缆或 WIFI 连接它们。
我将从我的台式电脑上运行它。
我试图阅读,但似乎对“并行”这个词(及其含义:fork、child、分布式处理)和应用程序(也通过 ssh)parallel
有很多困惑(或者只是我?)parallel
我最终得到的结果比我在谷歌上预期的要多得多......
另外,如果这样的伪/虚拟环境可以让应用程序认为不仅有 4 个核心(本地计算机),而且有 12 个核心(LAN 上的核心总数),并且只发送这些作业(或线程)所需的任何内容远程工作(但仅从本地计算机读取/写入数据),我认为向每个主机发送特定请求的复杂性可以降低到最终用户/开发人员。
因此,远程主机将仅使用处理器和 RAM,而不是 HD 进行输入/输出。
应用程序(或编译器)会将这个伪本地/虚拟机检测为具有大量内核(也可能是 RAM)的不同事物。
PS:我最初的问题想法是:是否可以让一个编译在多台机器上并行处理?
但当我尝试编译使用单声道的虚幻引擎时,我认为它可能不完全make
按照预期使用,对吧?
因此,如果您能为我指出一种方法来完成我在使用 Linux 的多台机器上编译 UE 的特定任务,我也将非常感谢。但问题主题对于最终用户来说仍然是一个透明的伪/虚拟环境。
答案1
不,无论如何,不是你想的那样[1]。必须专门编写程序才能在网络上使用多个 CPU 内核,通常涉及链接到消息传递库,例如开放MPI或者MPICH- 这些通常用于 HPC 集群,以及集群管理软件,例如泥浆或者公共广播公司。
不过,你很幸运,因为有一个现有的程序可以完全满足你的要求,使用网络上的一堆机器来编译软件:距离
摘自 debian 软件包描述:
Package: distcc
Version: 3.4+really3.3.5-3
Description-en: simple distributed compiler client and server
distcc is a program to distribute compilation of C or C++ code across
several machines on a network. distcc should always generate the same
results as a local compile, is simple to install and use, and is often
significantly faster than a local compile. distcc does not require all
machines to share a filesystem, have synchronized clocks, or to have
the same libraries or header files installed.
我不知道是否distcc
适用于编译虚幻引擎代码 - 这不是仅限于 Windows 吗?
[1] 不完全正确。你所说的叫做单一系统映像簇。有一个项目叫做莫西克斯Linux 做到了这一点,但后来它成为专有的,然后分叉成开放式Mosix,然后在 2008 年被开发人员终止(因为由于便宜且容易获得的多核/多线程 CPU 而不需要它),并继续使用LinuxPMI项目