相关疑难解决方法(0)

每个循环的FLOPS用于沙桥和haswell SSE2/AVX/AVX2

我对使用Sandy-Bridge和Haswell可以完成每个核心每个循环的触发器感到困惑.据我所知,对于SSE,每个核心每个周期应该为4个触发器,对于AVX/AVX2,每个核心每个周期应该有8个触发器.

这似乎在这里得到验证, 如何实现每个周期4个FLOP的理论最大值? ,这里, Sandy-Bridge CPU规范.

然而,下面的链接似乎表明,Sandy-bridge每个核心每个周期可以执行16个触发器,每个核心每个循环使用Haswell 32个触发器 http://www.extremetech.com/computing/136219-intels-haswell-is-an-前所未有-threat-to-nvidia-amd.

谁可以给我解释一下这个?

编辑:我现在明白为什么我感到困惑.我认为术语FLOP仅指单浮点(SP).我现在看到如何在每个循环中实现理论最大值4 FLOP的测试实际上是双浮点(DP),因此它们为SSE实现4个DP FLOP /周期,为AVX实现8个DP FLOP /周期.在SP上重做这些测试会很有趣.

cpu intel cpu-architecture avx flops

49
推荐指数
2
解决办法
6万
查看次数

循环展开以实现Ivy Bridge和Haswell的最大吞吐量

我用AVX一次计算八个点产品.在我目前的代码中,我做了类似的事情(在展开之前):

常春藤桥/桑迪桥

__m256 areg0 = _mm256_set1_ps(a[m]);
for(int i=0; i<n; i++) {        
    __m256 breg0 = _mm256_load_ps(&b[8*i]);
    tmp0 = _mm256_add_ps(_mm256_mul_ps(arge0,breg0), tmp0); 
}
Run Code Online (Sandbox Code Playgroud)

Haswell的

__m256 areg0 = _mm256_set1_ps(a[m]);
for(int i=0; i<n; i++) {      
    __m256 breg0 = _mm256_load_ps(&b[8*i]);
    tmp0 = _mm256_fmadd_ps(arge0, breg0, tmp0);
}
Run Code Online (Sandbox Code Playgroud)

我需要多少次为每个案例展开循环以确保最大吞吐量?

对于使用FMA3的Haswell,我认为答案是每个循环的FLOPS用于沙桥和haswell SSE2/AVX/AVX2.我需要将循环展开10次.

对于Ivy Bridge,我认为它是8.这是我的逻辑.AVX添加的延迟为3,延迟乘以5.Ivy Bridge可以使用不同的端口同时进行一次AVX乘法和一次AVX添加.使用符号m进行乘法,a表示加法,x表示无操作,以及表示部分和的数字(例如m5表示乘以第5部分和)我可以写:

port0:  m1  m2  m3  m4  m5  m6  m7  m8  m1  m2  m3  m4  m5  ... 
port1:   x   x   x   x   x  a1  a2  a3  a4  a5  a6  a7  a8  ...
Run Code Online (Sandbox Code Playgroud)

因此,通过在9个时钟周期后使用8个部分和(4个来自负载,5个来自乘法),我可以在每个时钟周期提交一个AVX负载,一个AVX加法和一个AVX乘法.

我想这意味着在Ivy …

c++ x86 sse intel avx

15
推荐指数
2
解决办法
3038
查看次数

Haswell核心可以同时执行多少32位整数运算?

在准备一些演示文稿的背景下,我想到我不知道Haswell核心可以同时执行的整数运算次数的理论极限.

我曾经天真地假设"英特尔核心有HT,但这可能是并行化不同类型的工作,所以可能核心最大化其与256位AVX操作的并行性,所以8个整数运算可以在每个时钟周期发出(并假设不错流水线,8完成)." - 所以8个操作/循环.

但后来我注意到这篇文章,它告诉我Haswells(和Sandy Bridges)有3个调度端口可以提供向量单元.那么真正的数字24整数运算/周期?

PS - 我意识到在实践中你可能需要实际从内存中读取所有数据,其带宽将是限制因素.或者QPI太慢了.

cpu x86 simd cpu-speed avx

2
推荐指数
1
解决办法
312
查看次数

标签 统计

avx ×3

cpu ×2

intel ×2

x86 ×2

c++ ×1

cpu-architecture ×1

cpu-speed ×1

flops ×1

simd ×1

sse ×1