gpt4 book ai didi

multithreading - Intel Nehalem 单线程峰值性能

转载 作者:行者123 更新时间:2023-12-01 23:14:34 25 4
gpt4 key购买 nike

我试图让我的 nehalem cpu 达到单线程 FP 峰值性能,以检测我的应用程序的性能异常,但我似乎无法达到。时钟速度为3.2 GHz,我想在不使用SSE指令和多线程的情况下实现cpu的峰值FP性能。

据我了解,单精度 FP 加法和乘法可以在每个时钟周期并行完成,从而产生 2 * 3.20 = 6.4 GFLOPS/秒的最大性能。

但是我无法通过一段简单的代码达到这种性能:

int iterations = 1000000;
int flops_per_iteration = 2;
int num_flops = iterations * flops_per_iterations;

for(int i=0; i<iterations; i++)
{
a[i] = i;
b[i] = i*2;
c[i] = i*3;
}

tick(&start_time);

for(int i = 0; i < iterations; i++){
a[i] *= b[i];
c[i] += b[i];
}

time = tock(&start_time);

printf("Performance: %0.4f GFLOPS \n", flops/(time*pow(10,-3)*pow(10,9)));

这段代码的性能为:~1.5 GFLOPS 而不是 6.4 GFLOPS。

有人有任何其他示例可以在不使用 MT 和 SSE 的情况下达到峰值性能,或者知道我的代码没有?

提前致谢

* 更新:新增热循环汇编代码:*

Address Assembly
Block 17:
0x4013a5 movssl (%rdi,%rax,4), %xmm2
0x4013aa movssl (%r8,%rax,4), %xmm0
0x4013b0 movssl (%rsi,%rax,4), %xmm1
0x4013b5 mulss %xmm2, %xmm0
0x4013b9 addss %xmm1, %xmm2
0x4013bd movssl %xmm0, (%r8,%rax,4)
0x4013c3 movssl %xmm2, (%rsi,%rax,4)
0x4013c8 inc %rax
0x4013cb cmp %rcx, %rax
0x4013ce jb 0x4013a5 <Block 17>

最佳答案

要提供 6.4 GFLOPS 的性能,您的 CPU 应在一个时钟内执行 10 条指令。如果展开,则为 7 条指令。这是不可能的。您不能在此处理器上获得超过 4 个指令/时钟。

关于multithreading - Intel Nehalem 单线程峰值性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com