为了检查AVX或SSE是否可用,编译器通常将SSE或AVX设置为true。但是有一个选项,如何在编译时接收缓存的大小?
编辑: 我稍微重新提出了这个问题,因为它还不够清楚。
我想要有关编译时缓存的信息。越多越好。我希望将其用于优化目的(即缓存阻塞,...)。在我当前的任务 - 空间阻塞 - 缓存的大小是最相关的。但下面的评论正确地询问了我需要哪个级别的缓存。此外,如果您考虑缓存的驱逐策略、缓存行的大小、级别数量、它们如何在核心之间共享......这样的例子不胜枚举,缓存的行为可能会非常不同。
所以我的一般问题:如何在编译期间接收有关缓存的任何信息?
对于我当前的任务,读出 /proc/cpuinfo
并使用那里给出的缓存大小就足够了。然而,一般问题要有趣得多。
如何在编译期间接收有关 cpu 的信息(重点关注其缓存)?
(我根本不考虑交叉编译。编译的代码将在同一台机器上运行。)
最佳答案
显然,没有哪个编译器能够拥有有关 cpu 的如此详细的信息并将其提供给编译程序。不过我找到了library ,这似乎正是这样做的。遗憾的是,仅在运行时。然而,它至少是一个舒适的解决方案。
(我偶然发现它。我不是在寻找它:)如果你想找东西,1)谷歌2)看看here )
关于c++ - 编译器在编译时给出的缓存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688698/