我正在编译一个".c / .c++“代码,用"make”命令在4台核心机器上编译需要1.5小时,我还有10台机器可以用来编译。我知道"make“中的"-j”选项,它以指定数量的线程分发编译。但是"-j“选项只在当前机器上分配线程,而不是在网络连接的其他10台机器上分发线程。
我们可以使用MPI或其他并行编程技术,但需要根据并行编程语言重写"MAKE“命令实现。
我们还有其他方法可以利用其他可用的机器进行编译吗??谢谢
发布于 2015-09-06 13:05:49
是的,有:远距离。
distcc是一个程序,用于在网络上的多台计算机上分发C或C++代码的编译。distcc应该始终生成与本地编译相同的结果,安装和使用简单,而且通常比本地编译快两倍或两倍以上。 与其他分布式构建系统不同,distcc不要求所有机器共享文件系统、同步时钟或安装相同的库或头文件。机器可以运行不同的操作系统,只要它们具有兼容的二进制格式或交叉编译器。 默认情况下,distcc通过网络为每个作业发送完整的预处理源代码,因此志愿机器所需的全部内容就是它们正在运行distccd守护进程,并且安装了适当的编译器。
他们的关键是,你仍然保持你的单一制造,但gcc的安排文件适当(运行预处理,头,.),但通过网络将编译安排为目标代码。
我曾经使用过它,它是相当容易设置--并帮助您的确切情况。
发布于 2015-09-25 20:29:13
https://github.com/icecc/icecream
Icecream是由SUSE在distcc的基础上创建的。和distcc一样,Icecream从构建中获取编译作业,并在允许并行构建的远程机器中分发它。但与distcc不同,Icecream使用的是中央服务器,它动态地将编译作业调度到最快的空闲服务器上。这一优势主要是对共享计算机的回报,如果你是x机上的唯一用户,你就可以完全控制它们。
https://stackoverflow.com/questions/32423666
复制相似问题