是否可以准备一个环境,使应用程序将其视为具有更多核心,其他 LAN 主机的分布式/并行核心?

是否可以准备一个环境,使应用程序将其视为具有更多核心,其他 LAN 主机的分布式/并行核心?

我有 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项目

相关内容