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