在编译优化期间,这个关于 gnugcc
编译器参数的最佳猜测的问题--param l2-cache-size=
?(默认为 kB 块大小的数字)
出现了。具有共享二级缓存的 cpu 核心集群、单个 MMU(内存管理单元)上具有联合二级缓存的 cpu 集群和每个单核具有私有二级缓存的 cpu 核心的推荐值是多少?
在 Linux 发行版上获取 L2 缓存大小¹可以通过控制台命令完成,例如:(
cat /sys/devices/system/cpu/cpu0/cache/index2/size
例如,对于多核系统上的 cpu0)
find /sys/devices/system/cpu/*/cache/index*/size -print -exec cat {} \;
lshw | grep -B 11 -C 11 -e level=2
dmidecode -t cache
lstopo-no-graphics
这是否足以在 gcc 邮件列表中请求支持,或者是否有更广泛的文档可用于与 L2 缓存相关的编译器标志?
谢谢
这个问题已在错误报告
错误 87444 中提出:'gcc -marc=native' sets L2 cache size equal to L3 cache size on i7 and i5 CPU。
似乎该参数
l2-cache-size
不一定指的是二级缓存。它实际上是动态选择的gcc
,与 L3 缓存大小相同,并且仅在没有 L3 缓存时才等于 L2 缓存。一位开发人员评论说,它真的应该重命名为
last-level-cache
. 所以如果有 L4 缓存,gcc
将使用该大小。我认为更改此参数不是一个好主意。但如果您这样做,请注意该参数仅用于一些小的启发式算法,并且从评论的语气来看似乎相对不重要。