【发布时间】:2015-07-18 12:28:34
【问题描述】:
我试图计算一个大矩阵中所有元素的总和。以下是测试用例:
- MT 和 AVX 需要 37 秒
- MT 和无 AVX 需要 40 秒
- AVX 和无 MT 需要 49 秒
- 既不是 AVX 也不是 MT 105 s
在所有情况下,CPU 时钟都固定为 3.0 GHz(由 cpufreq-info 声明):
current policy: frequency should be within 1.60 GHz and 3.40 GHz.
The governor "userspace" may decide which speed to use
within this range.
current CPU frequency is 3.00 GHz.
矩阵有 25000000 个类型为 double 且值为 1.0 的元素。并且在循环中重复计算总和 4096 次。如果没有 AVX,使用 MT 时的速度提升是 2.6。使用 AVX,它只有 1.3。运行 MT 时,矩阵被分成 4 个块,每个线程一个。如果我降低 CPU 频率,则 AVX 的 MT 改进更大,因此缓存未命中也可能存在一些问题,但这无法解释 (4)/(2) 和 (3)/(1) 之间的区别。 AVX 和 MT 是否以某种方式相互竞争?芯片是i3570K。
【问题讨论】:
标签: multithreading intel avx