雖然 GNU Make 和其他構建系統可以很好地進行擴充套件以併發編譯大量檔案,不過 GCC 自身也一直在讓 GCC 的更多工作在編譯大型原始碼檔案時能夠並行執行。
早在2019年夏天,其團隊就已開始嘗試解決並行化遇到的瓶頸,讓更多的編譯器工作在更大的原始碼檔案中能夠並行執行,並取得了不錯的進展。曾參與開發的學生開發者 Giuliano Belinassi 現在又回到了 GSoC 並繼續此項工作。
Giuliano 近日提供了關於“自動並行編譯可行性”的第二份報告,該報告旨在加快大檔案的編譯以及為 GNU Jobserver 進行整合。
該程式碼目前可正常執行,其他開發者也可以通過 GCC 的分支版本進行嘗試。資料顯示,在四核 Intel Core i7 移動處理器上的提速範圍從輕微減速提升到原始 GCC 程式碼的 1.9 倍速度左右。目前,GCC 的 C、C++ 和 Fortran 前端都支援這項工作,而其他前端可能會在一段時間內出現。
Giuliano 在最新的狀態報告中總結道:“目前專案進展順利,儘管諸如禁用 static promotion 之類的保守方法可能會對並行性潛力產生負面影響。未來解決此問題的方法之一是將最終的彙編檔案傳送回主 GCC 程序,然後再串聯成一個彙編檔案,而不是對多個彙編檔案進行部分連結。這當然會增加程序間通訊的成本,但最終的結果應該是值得的。”
[admin
]