我如何确定处理器拥有多少个AVX寄存器?

问题描述 投票:0回答:1

当前,我正在开发使用AVX寄存器进行积分计数的函数。我想知道我的计算机上是否足够。我怎么知道的?

c++ cpu-registers avx
1个回答
1
投票

完全假定具有AVX的CPU(即不是Pentium / Celeron,甚至不是最新一代的CPU:]

32位模式始终有8个架构YMM寄存器。对于高性能计算,大多数情况下已不再使用32位模式。

64位模式具有16个YMM寄存器,如果使用的是EVEX编码的256位版本的指令,则带有AVX512VL,则为32个。

不论哪种情况,都将它们重命名为更大的物理寄存器文件(PRF),避免了写后写和读后写的危险。 https://blog.stuffedcow.net/2013/05/measuring-rob-capacity/具有一些有关无序执行窗口大小的信息,这些信息受PRF大小限制,而不是受ReOrder Buffer(ROB)限制。


[您可以在大多数编译器上用#if defined(__x86_64__)检测到64位模式,可能在MSVC上也可以使用其他方法。

AVX的编译时检测为__AVX__,AVX512VL为__AVX512VL__。 (具有AVX512的主流CPU拥有它,至强融核(KNL / KNM)没有;只有传统的SSE或AVX512全宽ZMM。)您可能只想对AVX进行运行时检测,而不是将其用作所有基准的基线源文件。

© www.soinside.com 2019 - 2024. All rights reserved.