Performance 为什么可以';我的超便携笔记本电脑CPU在HPC中保持最高性能
我开发了一个高性能Cholesky分解例程,在单个CPU上的峰值性能应该在10.5gflops左右(没有超线程)。但是当我测试它的性能时,有一些我不理解的现象。在我的实验中,我测量了矩阵维数N从250增加到10000的性能Performance 为什么可以';我的超便携笔记本电脑CPU在HPC中保持最高性能,performance,x86,intel,hpc,cpu-speed,Performance,X86,Intel,Hpc,Cpu Speed,我开发了一个高性能Cholesky分解例程,在单个CPU上的峰值性能应该在10.5gflops左右(没有超线程)。但是当我测试它的性能时,有一些我不理解的现象。在我的实验中,我测量了矩阵维数N从250增加到10000的性能 在我的算法中,我应用了缓存(具有调整的阻塞因子),并且在计算期间总是以单位步长访问数据,因此缓存性能是最佳的;消除了TLB和寻呼问题 我有8GB的可用RAM,实验期间的最大内存占用不到800MB,因此不会出现交换 在实验过程中,没有像web浏览器这样的资源需求过程同时运行。
- 在我的算法中,我应用了缓存(具有调整的阻塞因子),并且在计算期间总是以单位步长访问数据,因此缓存性能是最佳的;消除了TLB和寻呼问题李>
- 我有8GB的可用RAM,实验期间的最大内存占用不到800MB,因此不会出现交换李>
- 在实验过程中,没有像web浏览器这样的资源需求过程同时运行。只有一些非常便宜的后台进程在运行,以记录CPU频率以及CPU温度数据每2秒
- 既然CPU频率没有下降,为什么性能会下降
- 温度究竟如何影响CPU性能?从72度增加到78度真的会让事情变得更糟吗?
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
更新1(对照实验) 在我最初的实验中,CPU从N=250一直忙到N=10000。许多人(主要是那些在重新编辑之前看到这篇文章的人)怀疑CPU过热是性能下降的主要原因。然后我回去安装了
lmsensors
linux包来跟踪这些信息,事实上,CPU温度上升了
但为了完成这张照片,我做了另一个对照实验。这一次,我给CPU一个每N之间的冷却时间。这是通过要求程序在循环开始时暂停若干秒来实现的
- N在250-2500之间时,冷却时间为5s李>
- 氮在2750~5000之间时,冷却时间为20s李>
- 对于5250-7500之间的氮,冷却时间为40s李>
- 最后,对于7750和10000之间的氮,冷却时间为60s
好的,这是一组新的绘图: 我不知道为什么我无法上传第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
由于我没有将计算固定到一个内核,操作系统将交替使用两个不同的内核。采取行动更有意义
freq[i] <- max (freq0[i], freq1[i])
temp[i] <- max (temp0[i], temp1[i])
freq[i]TL:DR:你的结论是正确的。CPU的持续性能远未达到峰值。这是正常的:考虑到轻质散热片、风扇和供电,峰值性能仅作为突发交互工作负载的短期“奖金”,高于其额定持续性能
您可以在这台机器上开发/测试,但基准测试将很困难。您需要在集群、服务器或台式机上运行,或者至少在游戏/工作站笔记本电脑上运行
从你发布的CPU信息来看,你有一个Broadwell一代。它的最大涡轮为2.9GHz,TDP的持续频率为1.4GHz(6W)
对于短时间的爆炸,它可以运行得更快,产生的热量比冷却系统需要处理的热量多得多。这就是一切。它可以让像你这样的低功耗超便携笔记本电脑在网络浏览器之类的东西中具有快速的UI性能,因为interactive的CPU负载几乎总是突发的
桌面/服务器CPU(Xeon和i5/i7,但不是i3)仍然有turbo,但持续的频率更接近max turbo。e、 g.a的持续“额定”频率为4.0GHz。在该频率及以下,其使用(并转换为热量)不会超过其额定TDP 88W。因此,它需要一个能够处理88W的冷却系统。当电源/电流