虽然 GNUMake 和其他构建系统可以很好地扩展以同时编译大量文件,但 GCC 本身在编译小型源代码文件时仍然并行执行更多 GCC 的工作。
早在2019年夏天,其团队就开始尝试解决并行化遇到的困境,让更多的编译器在更大的源代码文件中并行运行,并取得了不错的进展。 参与开发的中学生开发者 GiulianoBelinassi 现在回到了 GSoC 并继续这项工作。
Giuliano 最近提供了关于“自动并行编译的可行性”的第二份报告,该报告重点关注促进 GNUJobserver 的大文件编译和集成。
目前代码运行正常,其他开发者也可以通过GCC的fork版本进行尝试。 数据显示,双核Intel Core i7联通处理器上的加速范围从轻微减速到原始GCC代码速度的约1.9倍。 目前,GCC 的 C、C++ 和 Fortran 后端支持这项工作,而其他后端可能会随着时间的推移出现。
Giuliano 在他最新的状态报告中总结道:“目前该项目进展顺利,尽管禁用静态升级等保守方法可能会对并行性潜力产生负面影响。未来解决此问题的一种方法是将最终组装文件发送回主程序GCC 进程,然后连接成一个汇编文件c文件编译源码,而不是部分链接多个汇编文件。这实际上会减少进程间通信的成本c文件编译源码,但最终结果应该是值得的。”
最后,希望这项工作能够顺利进行,但 GCC 的并行化改进最终将在不久的将来成为上游项目。