李哲源*_*李哲源 12 x86 hpc matrix cpu-speed matrix-multiplication
我开发了一个高性能的 Cholesky分解程序,它应该在单个CPU上具有大约10.5 GFLOP的峰值性能(没有超线程).但是当我测试它的性能时,有一些我不明白的现象.在我的实验中,我通过增加矩阵维数N(从250到10000)来测量性能.
对于任何NI测试,我都希望性能(在GFLOP中)应保持在10.5左右.但是,如第一张图所示,在实验中间观察到显着的性能下降.
CPU频率和CPU温度见第2和第3图.实验在400年代结束.实验开始时温度为51度,CPU忙时迅速升至72度.之后,它慢慢增长到78度的最高点.CPU频率基本稳定,温度升高时不下降.
所以,我的问题是:
CPU信息
System: Ubuntu 14.04 LTS
Laptop model: Lenovo-YOGA-3-Pro-1370
Processor: Intel Core M-5Y71 CPU @ 1.20 GHz * 2
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0,1
Off-line CPU(s) list: 2,3
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 61
Stepping: 4
CPU MHz: 1474.484
BogoMIPS: 2799.91
Virtualisation: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 4096K
NUMA node0 CPU(s): 0,1
CPU 0, 1
driver: intel_pstate
CPUs which run at the same hardware frequency: 0, 1
CPUs which need to have their frequency coordinated by software: 0, 1
maximum transition latency: 0.97 ms.
hardware limits: 500 MHz - 2.90 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 500 MHz and 2.90 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.40 GHz.
boost state support:
Supported: yes
Active: yes
Run Code Online (Sandbox Code Playgroud)
更新1(对照实验)
在我最初的实验中,CPU一直忙于工作,从N = 250到N = 10000.许多人(主要是那些在重新编辑之前看过这篇文章的人)怀疑CPU过热是性能受损的主要原因.然后我回去安装了lm-sensorslinux软件包来跟踪这些信息,实际上,CPU温度上升了.
但为了完成图片,我做了另一个对照实验.这次,我给每个N之间的CPU一个冷却时间.这是通过要求程序在循环迭代开始时暂停几秒钟来实现的.
请注意,冷却时间远远大于计算所花费的时间.对于N = 10000,在峰值性能下Cholesky分解只需要30s,但我要求60s冷却时间.
这在高性能计算中肯定是一个非常无趣的环境:我们希望我们的机器始终以最佳性能运行,直到完成一项非常大的任务.所以这种停顿毫无意义.但它有助于更好地了解温度对性能的影响.
这一次,我们看到所有N都达到峰值性能,就像理论支持一样!CPU频率和温度的周期性特征是冷却和增压的结果.温度仍然呈上升趋势,仅仅因为随着N的增加,工作负荷越来越大.正如我所做的那样,这也证明了冷却时间更长的冷却时间.
达到峰值性能似乎排除了温度以外的所有影响.但这真的很烦人.基本上它说计算机会在HPC中累了,所以我们无法获得预期的性能提升.那么开发HPC算法有什么意义呢?
我不知道为什么我无法上传第6个数字.添加第6个数字时,我根本不允许我提交编辑.所以很抱歉我无法附加CPU频率的数字.
更新2(我如何测量CPU频率和温度)
感谢Zboson添加x86标签.以下bash命令是我用于测量的命令:
while true
do
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq >> cpu0_freq.txt ## parameter "freq0"
cat sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq >> cpu1_freq.txt ## parameter "freq1"
sensors | grep "Core 0" >> cpu0_temp.txt ## parameter "temp0"
sensors | grep "Core 1" >> cpu1_temp.txt ## parameter "temp1"
sleep 2
done
Run Code Online (Sandbox Code Playgroud)
由于我没有将计算固定为1个核心,因此操作系统将交替使用两个不同的核心.采取更有意义
freq[i] <- max (freq0[i], freq1[i])
temp[i] <- max (temp0[i], temp1[i])
Run Code Online (Sandbox Code Playgroud)
作为整体测量.
TL:DR : 你的结论是正确的。您的 CPU 的持续性能远未达到峰值。这是正常的:考虑到轻型散热器、风扇和供电,峰值性能仅作为突发交互式工作负载的短期“奖励”可用,高于其额定持续性能。
你可以在这台机器上开发/测试,但基准测试会很困难。您需要在集群、服务器或台式机上运行,或者至少是在游戏/工作站笔记本电脑上运行。
从您发布的 CPU 信息来看,您拥有一个双核超线程 Intel Core M,额定可持续频率为 1.20 GHz,Broadwell 代。它的最大睿频为 2.9GHz,它的 TDP-up 可持续频率为 1.4GHz(6W)。
对于短时间爆发,它可以运行得更快,并产生比其冷却系统需要处理的更多的热量。这就是英特尔“turbo”功能的全部意义所在。它让像您这样的低功耗超便携笔记本电脑在诸如 Web 浏览器之类的东西中拥有快速的 UI 性能,因为来自交互的 CPU 负载几乎总是突发的。
台式机/服务器 CPU(至强和 i5/i7,但不是 i3)仍然具有涡轮增压,但持续频率更接近最大涡轮增压。例如Haswell i7-4790k具有 4.0GHz 的持续“额定”频率。在该频率及以下频率下,它的消耗(并转化为热量)不会超过其 88W 的额定 TDP。因此,它需要一个可以处理 88W 的冷却系统。在功率/电流/温度允许的情况下,它的时钟频率最高可达 4.4GHz,并使用超过 88W 的功率。(计算功率历史以保持 88W 持续功率的滑动窗口有时可在 BIOS 中配置,例如 20 秒或 5 秒。根据运行的代码,4.4GHz 可能不会将电流需求增加到接近峰值的任何位置。例如有很多分支错误预测的代码仍然受到 CPU 频率的限制,但这不会像 Prime95 那样使 256b AVX FP 单元饱和。)
笔记本电脑的最大涡轮比额定频率高 2.4 倍。那个高端 Haswell 台式机 CPU 的频率只能提高 1.1 倍。最大持续频率已经非常接近最大峰值限制,因为它被认为需要一个能够跟上这种热量产生的良好冷却系统。还有一个可以提供那么多电流的固态电源。
Core M 的目的是让 CPU能够将自身限制在超低功率水平(额定 TDP 为 1.2GHz 时为 4.5 W,1.4GHz 时为 6W)。因此,笔记本电脑制造商可以安全地设计一个小巧轻便的冷却和电力传输系统,并且只能处理那么多的电力。“场景设计功率”只有 3.5W,这应该代表实际代码的热要求,而不是像 Prime95 这样的最大功率的东西。
即使是“普通”超低电压笔记本电脑 CPU 的额定持续功率也为 15W,而高功率游戏/工作站笔记本电脑 CPU 的额定功率为 45W。当然,笔记本电脑供应商将这些 CPU 放入配备更强大散热器和风扇的机器中。请参阅维基百科上的表格,并比较台式机/服务器 CPU(也在同一页面上)。
达到峰值性能似乎排除了温度以外的所有影响。但这真的很烦人。基本上它说计算机会在 HPC 中感到疲倦,因此我们无法获得预期的性能提升。那么开发HPC算法的意义何在?
关键是要在热限制不太严重的硬件上运行它们!像 Core M 这样的超低功耗 CPU 是一个不错的开发平台,但不是一个好的 HPC 计算平台。
即使是带有 xxxxM CPU 而不是 xxxxU CPU 的笔记本电脑也可以。(例如,旨在持续运行 CPU 密集型内容的“游戏”或“工作站”笔记本电脑)。或者在 Skylake 系列中,“xxxxH”或“HK”是 45W 移动 CPU,至少是四核。
进一步阅读:
| 归档时间: |
|
| 查看次数: |
4302 次 |
| 最近记录: |