皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

GCC 16 因今日高核心数 CPU 而增加其默认 LTO 分区数

GCC 的 –param lto-partitions= 编译器标志用于控制链接时间优化(LTO)过程中使用的分区数。多年来,该值默认为 128,但鉴于今天服务器和 HEDT/工作站处理器的核心数不断上升,这个默认分区数现在被增加到四倍。

GNU 编译器集合(GCC)的开发者 Jan Hubicka 已经将明年 GCC 16 编译器发布的默认 LTO 分区大小进行了提升。用户可以通过 –param lto-partitions= 编译器标志轻松覆盖该值,但鉴于今天核心数越来越高的系统,默认值将从 128 更改为 512。

Hubicka 在提交中解释了默认大小的增加:

增加默认 LTO 分区数量

LTO 分区的数量应该超过常用 CPU 的 CPU 数量(或超线程数)。我认为是时候再次增加它了,正如在 LTO 和 toplevel asm 线程中讨论的那样,这样做可以很好地扩展。临时文件的使用从 2.7MB 增长到 2.9MB,这似乎是可以接受的。在拥有 256 个超线程的机器上,整体构建时间与之前相当。

通过增加默认 LTO 分区数量,可以将 LTO 过程分割成更小的元素,从而实现更高的并行性。

GCC 16 因今日高核心数 CPU 而增加其默认 LTO 分区数

随着 Threadripper 9995WX 等工作站处理器拥有 96 核心/192 线程,以及 EPYC 9965 每插槽达到 192 核心/384 线程,增加默认 LTO 分区数量早已势在必行,从 128 个分区开始。我们将看到这个 512 个分区的默认值在下一代处理器将核心数量推得更高时能维持多久。

转自  GCC 16 Increasing Its Default LTO Partition Count Due To Today’s High Core Count CPUs – Phoronix