c++ - 编译器在编译时给出的缓存信息

标签 c++ c cpu-cache

为了检查AVX或SSE是否可用,编译器通常将SSEAVX设置为true。但是有一个选项,如何在编译时接收缓存的大小?

编辑: 我稍微重新提出了这个问题,因为它还不够清楚。

我想要有关编译时缓存的信息。越多越好。我希望将其用于优化目的(即缓存阻塞,...)。在我当前的任务 - 空间阻塞 - 缓存的大小是最相关的。但下面的评论正确地询问了我需要哪个级别的缓存。此外,如果您考虑缓存的驱逐策略、缓存行的大小、级别数量、它们如何在核心之间共享......这样的例子不胜枚举,缓存的行为可能会非常不同。

所以我的一般问题:如何在编译期间接收有关缓存的任何信息?

对于我当前的任务,读出 /proc/cpuinfo 并使用那里给出的缓存大小就足够了。然而,一般问题要有趣得多。

如何在编译期间接收有关 cpu 的信息(重点关注其缓存)?

(我根本不考虑交叉编译。编译的代码将在同一台机器上运行。)

最佳答案

显然,没有哪个编译器能够拥有有关 cpu 的如此详细的信息并将其提供给编译程序。不过我找到了library ,这似乎正是这样做的。遗憾的是,仅在运行时。然而,它至少是一个舒适的解决方案。

(我偶然发现它。我不是在寻找它:)如果你想找东西,1)谷歌2)看看here )

关于c++ - 编译器在编译时给出的缓存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688698/

相关文章:

c - C 错误中的 I/O

c - 生成一个介于 1 和 N-1 之间的随机数

caching - 虚拟索引物理标记缓存同义词

c++ - 如果我在 _mm_clflushopt() 之后不发出 _mm_sfence() 会发生什么(不好的)事情?

c++ - 为什么全局 const char 需要 "static"而 bool 不需要?

c++ - 如何在 Magick++ 中为文本添加自动换行

c++ - std::function 的移动赋值不是 noexcept,但 std::function::swap 是。是什么赋予了?

c++ - 在 MacOS 上构建 conan/cmake 项目时的相对 RPATH

c - 实现缓存建模框架

javascript - int 的奇怪属性