初试分布式编译系统 IncrediBuild(转)

初试分布式编译系统 IncrediBuild

随着项目复杂性的逐渐增加,编译时间开始成为一个需要关注的问题。最近我的一个项目里,由于大量使用了C++的模板技术,导致编译时间非常长。尝试过很多其他方法,效果都不明显。今天,尝试了一下分布式编译系统 IncrediBuild,感觉有些效果,特此简要记录一下。

 

测试前,我先对项目进行了几次 rebuild,以确定参考编译时间:

  • scons mytarget: 采用默认参数,编译时间为 20 分钟;
  • scons -j16 mytarget: 采用 scons 的并发编译,这样可以充分利用我的双核 CPU,编译时间为 13 分钟;

IncrediBuild 是一个分布式编译系统,由两大部分组成:Coordinator 和 Agent,Coordinator 类似一个中央任务分派器,用来管理各个编译 Agent:

architecture

我有两台可用作编译的电脑,台式机 Kingkong 是 Intel E5200,笔记本 Ninja 是 Intel T7100,它们都是双核 CPU 。根据这个架构,我在 Kingkong 上安装 Coordinator ,然后将 Agent 分别安装到 Kingkong 和 Ninja 上。

要进行 IncrediBuild ,还需要配置一个 xml 文件,比如我的就是:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Profile FormatVersion="1">
  <Tools>
    <Tool Filename="python" AllowIntercept="true" />
    <Tool Filename="cl" AllowRemote="true" VCCompiler="True"/>
    <Tool Filename="link" AllowRemote="false" />
  </Tools>
</Profile>

我将这个文件保存为 incredibuild.xml。然后从控制台启动 IncreditBuild:

] XGConsole /command="scons -u -j16 mytarget" /openmonitor /profile="incredibuild.xml"

启动后,一个图形化的编译界面就开始记录整个分布式编译过程:

aaa

编译结束后,从分析报告里看出,本次编译用了 10分钟又10秒。感觉比 13 分钟的单机编译没有提高多少。仔细分析原因,从图中可以看出,我的项目使用了 CUDA 的编译器 nvcc ,而这个编译器并不是被 IncrediBuild 所支持的,所以无法分派到远程 Agent 上进行编译。不过,对于 cl 这个 MSVC 的编译器,从图中可以看出确实体现了分布式编译的效果。所以,要想进一步提高编译速度,有两个方面:一是看看如何让 IncrediBuild 支持 nvcc 编译器;二是,增加更多的 Agent(不过增加更多的 Agent 似乎对于我的这个项目不会有太多的效率提高,因为我的瓶颈在于 nvcc 的编译过于缓慢了)。

当然,我也是初次尝试这个系统,对很多设置都还不太了解,比如我就很奇怪,那些使用的第三方库是怎么分派到远程计算机上的呢?IncrediBuild 在设置时会为每个 Agent 分派一个缓冲区,默认是4G ,我估计这就是用来存放这些编译依赖的文件的地方,当然,具体怎样还需要进一步摸索。

总之,对于纯 C++ 的项目,我想,这个系统应该是能大大提高编译速度的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值