在visualstudio中使用Incredibuild无缝加速CMake项目

Visual Studio 2017随附 一流的CMake支持 . 从那时起,我们一直在根据您的反馈添加新功能,以改进对CMake的支持。我们以前在博客上写过 内置的Incredibuild支持加速和可视化您的vcxproj项目 ,你们中的许多人要求为您的CMake项目获得同样级别的支持。我们很高兴地宣布,现在可以在visualstudio中使用Incredibuild来加速CMake项目的Windows构建。

null

令人难以置信的建设回顾

作为Incredibuild产品的支柱, 虚拟化分布式处理 ™ 使由多个并发进程组成的工作负载能够通过网络或公共云自动、动态地分布到远程计算机上的数百个甚至数千个空闲CPU。因为CMake构建由数百个可以并行执行的编译任务组成,所以拥有数百个内核可以极大地加快构建时间,这正是分布式计算所提供的。

虚拟化分布式处理™ 甚至可以在远程机器上使用空闲的CPU,而用户在后台操作。在拥有数百台机器的组织中,任意给定时刻空闲CPU的总数很容易达到数千。这些都是浪费的内核,无法通过重建来加速需要计算能力的耗时工作负载。

Incredibuild在安全沙盒中的远程计算机上运行进程。进程正常运行所需的一切都由从本地主机到远程计算机的Incredibuild动态模拟。 这意味着您只需要在远程计算机上安装Incredibuild代理,而无需安装visualstudio、源代码或任何其他构建工具。 远程执行的进程生成的任何输出(std输出、错误、返回代码、生成的文件等)都会自动同步回本地主机,就好像该进程是在本地执行的一样。

使用Visual Studio+CMake+Incredibuild

在Visual Studio安装程序中,确保选中了“C++CMake tools for Windows”和“IncrediBuild–Build Acceleration”复选框:

The checklist of optional features to install, including CMake Tools and Incredibuild

安装后,VisualStudio开发环境中会出现一个Incredibuild工具栏和菜单,提供Incredibuild的分布式生成和重建操作。

Animated gif showing Incredibuild building a project in a distributed fashion on many cores

使用Incredibuild的构建监视器可视化您的构建

Incredibuild的另一个好处是 不可信生成监视器 工具。这个构建可视化工具用一个圆滑、直观的图形用户界面替换了旧的文本输出,将您的构建转换成一个可视化实体,您可以轻松地使用它,并帮助您发现长持续时间、错误、警告、瓶颈和依赖项。

让我们看看我们都习惯使用的标准文本输出:

Plain text output

现在,我们来看看通过与VisualStudio体验无缝集成的Incredibuild的build Monitor工具,构建是什么样子的:

Visual build monitor, showing passed tasks, tasks with warning, and a system utilization graph on a timeline

每种颜色代表构建任务状态,允许您立即确定哪些构建任务执行时没有出现问题,哪些需要您注意。条形宽度表示特定任务的持续时间,侧边导航栏显示执行任务的特定机器和核心。

有关更多信息,请参阅 上一篇关于Incredibuild的Build Monitor的博客文章 .

CMake构建与Incredibuild相比快了多少?

以下数据基于通过编译流行的核心OpenCV开源项目来使用MSBuild运行CMake,以建立已知的基线。本例使用Ninja生成器,但支持所有VisualStudio生成器。以下是使用Incredibuild的结果:

Graph showing the following results of number of machines and cores against build time: 1 machine, 8 cores took 16 minutes. 4 machines, 22 cores took 6:26. 5 machines, 30 cores took 4:42. 10 machines, 112 cores took 1:42.

下面是CMake OpenCV构建在构建监视器中的样子。

Animated gif showing the build monitor for a large build, with the tasks being distributed across many machines

总而言之,9.5倍的性能提升意味着开发人员可以花更多的时间在区域中构建优秀的代码,而不用花太多的时间等待代码构建。在这个特定的用例中,在本例中使用的100个内核的基础上,向Incredibuild池添加额外的内核,将产生更好的编译时间。

持续整合,持续改进

您可以使用相同的Incredibuild基础结构来加速您选择的CI/CD下的CMake项目,以获得完整的体验,还可以加速作为构建或其他计算密集型过程(如代码分析、代码签名、各种测试类型等)一部分的单元测试。

和我们谈谈

我们鼓励您 下载Visual Studio 2019 再试试这个 难以置信的建筑 功能。我们可以通过下面的评论或电子邮件联系我们(visualcpp@microsoft.com). 如果在visualstudio中遇到其他问题或有其他建议,可以使用 报告问题 工具或直接访问 Visual Studio开发人员社区 . 你也可以在Twitter上找到我们( @视觉 ).

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享