本帖最后由 chungexcy 于 2015-11-10 03:26 编辑
更新:非常感谢大家热心帮助和提供的测试数据,表格全部覆盖intel近十年的所有架构了,包括Core2中的迭代更新。[Core2->Skylake]
在我之前“论指令集和超线程的作用与重要性”那贴中,我谈及了FMA、AVX、SSE对于特定环境下的浮点运算有翻倍的提升,而超线程的引入能大大提高这些SIMD运算单元的使用率,通俗地说就是让计算单元不要因为其他原因而闲着。
今天我来谈谈AVX2对整数运算的加成,并用一个实际的应用的性能提升来说明。
一、简单介绍一下SIMD相关的指令集
首先提高cpu的性能主要有4个方面:IPC,频率,核心数(+超线程),以及SIMD。SIMD的意思是单个SIMD指令可以同时处理多个数据。高性能科学计算的理论极限可以简单写为IPC x 频率 x 核心数 x SIMD,单位就是我们熟悉的GFlops。
对于32位浮点运算:例如一个SIMD为128位的SSE,就是说一次SIMD操作,可以对连续的4个浮点数做加法或乘法,如上图所示。一个SIMD为256位的AVX,可以一次做8个加法或乘法,而一个SIMD为256位的FMA,可以一次同时作8个加法+乘法。这样理论性能就能翻倍,也就是我们在我上一贴中看到Skylake能比Sandy bridge翻一倍的理论基础。
AVX/FMA是浮点运算单元,而AVX2则是将整数运算的SIMD单元由原来的128位提升到256位,大大提高了理论性能。
二、测试软件x265的介绍
先简单科普一下视频编码的一些概念。
对视频编码有点兴趣的都应该听在下载的视频文件名中注意到H264或x264这个关键字。简单解释的话,视频就是一个快递盒子,里面包了一个视频,一个或几个音频,以及可选的一些字幕。这个盒子就是我能常见的文件名后缀mp4/mkv/ts。而里面的视频现在通常使用的是一个叫做H264的文件。这个H264就是我们看到的图像画面。而x264就是编码这个H264文件的一个常用工具。一般我们拍摄过的视频,或者fraps的游戏录像,都要先经过H264编码,x264的性能直接决定了一个视频得花几个小时才能编码好,之后才能分享到视频网站去。
H265/HEVC是H264/AVC的下一代标准,今年底很快就会有商业应用4k蓝光发售,而4k蓝光的视频编码格式将从H264进化到H265。这里大家应该知道了x265就是对应H265的编码工具,现在依然在开发中,未来的应该还能有不少的性能提升空间。
(同一段视频的截图示例,左边这段为 x264 10bit 96.7 KB, 右边这段为 x265 10bit 96.4 KB)
由于视频编码中有大量的整数运算,而x265前期开发刚好是Haswell发布引入AVX2的时候,自然就优先采用AVX2进行优化。等到H265普及的时候,AVX2也差不多普及了。现在的版本已经到1.8,但由于1.8版本发布不到1个月,实际性能并不如1.7的最后一个版本。我在测试中决定使用1.7-511。
测试软件是一个叫做x265 benchmark的程序,有一些评测网站对6700k是用过。但这个benchmark发布较早,内部用的是x265的1.4的版本,由于是基准测试不好更换版本。但现在这个1.7的已经比1.4有了接近40%的提升,我在测试中就换成了1.7。
三、不同架构的x265性能比较
该程序对同一段视频做4遍一样的x265编码,得出4个编码速度FPS,我以平均值为参考标准。这里我测得不多,希望大家帮我测一下其他的数据。
- 型号 运行频率 指令集 2线程 4线程 8线程 12线程 16+线程 数据来源ID
- n2910 1.6g SSE4.2 1.56 FPS mercuryfall
- qx6700 2.66g SSSE3 3.17 FPS Cubelia
- e8500 3.16g SSE4.1 3.76 FPS chungexcy
- e5540 2.8g SSE4.2 8.46 FPS gtboy
- x5677 x2 3.6g SSE4.2 18.74 FPS (16T) li2921578
- i5 2400 3.1g AVX 9.44 FPS Cubelia
- i7 2600 3.5g AVX 12.41 FPS chungexcy
- i5 3470 3.8g AVX 12.70 FPS mercuryfall
- i7 3630qm 3.2g AVX 12.32 FPS cdlh28
- e3 1230v2 3.5g AVX 12.85 FPS SuperbirdRIP
- i7 3770k 4.3g AVX 16.64 FPS qilifan
- e5 2660 x2 2.4g AVX 22.07 FPS (24T) 847681220
- i5 4590r 3.0g AVX2 14.39 FPS chungexcy
- i5 4690k 4.5g AVX2 21.51 FPS NOIP117
- i7 4710hq 3.0g AVX2 16.80 FPS (est.) hym_21
- e3 1231v3 3.6g AVX2 19.75 FPS Cogae
- i7 4770k 4.0g AVX2 22.55 FPS overthink
- i7 4790k 4.4g AVX2 24.92 FPS fastslz
- i7 5820k 3.3g AVX2 26.22 FPS Aillen
- i5 5200u 2.5g AVX2 6.03 FPS 7.28 FPS chungexcy
- i7 6700k 4.9g AVX2 32.65 FPS (est.) sonyzhj
复制代码
每代架构选了一些代表,换算成同频率:
- 型号 运行频率 指令集 2线程 4线程 8线程 12+线程
- n2910 1.6g SSE4.2 0.972 FPS
- qx6700 1.0g SSSE3 1.192 FPS
- e8500 1.0g SSE4.1 1.189 FPS
- e5540 1.0g SSE4.2 3.020 FPS
- x5677 x2 1.0g SSE4.2 5.206 FPS (16T)
- i5 2400 1.0g AVX 3.045 FPS
- i7 2600 1.0g AVX 3.546 FPS
- i5 3470 1.0g AVX 3.341 FPS
- i7 3630qm 1.0g AVX 3.850 FPS
- e5 2660 x2 1.0g AVX 9.196 FPS (24T)
- i5 4690k 1.0g AVX2 4.780 FPS
- i7 4790k 1.0g AVX2 5.663 FPS
- i7 5820k 1.0g AVX2 7.945 FPS (12T)
- i5 5200u 1.0g AVX2 2.411 FPS 2.913 FPS
- i7 6700k 1.0g AVX2 6.664 FPS
复制代码 以此推断:Sandy Bridge超线程提升16.5%;Haswell/Broadwell超线程提升18-21%。
关于并行效率,16线程cpu利用率大约95%,24线程大约90%,36线程大约75%。双路实际表现相对于cpu使用率还再要降一些。
换算成同频率单核心:
- 型号 运行频率 指令集 1核心 百分比 架构 备注
- n2910 1.0g SSE4.2 0.243 FPS 27.39% Silvermont (22nm) 寨版(每核128位SIMD单元数为Core(2个)的一半)
- qx6700 1.0g SSSE3 0.298 FPS 33.60% Core 2 (65nm) 胶水4核心
- e8500 1.0g SSE4.1 0.595 FPS 67.07% Core 2 (45nm)
- e5540 1.0g SSE4.2 0.757 FPS 85.16% Nehalem
- i5 2400 1.0g AVX 0.761 FPS 85.88% Sandy Bridge
- i7 2600 1.0g AVX 0.887 FPS 100.00% Sandy Bridge
- i5 3470 1.0g AVX 0.835 FPS 94.23% Ivy Bridge
- i7 3630qm 1.0g AVX 0.963 FPS 108.57% Ivy Bridge
- i5 4690k 1.0g AVX2 1.195 FPS 134.72% Haswell
- i7 4790k 1.0g AVX2 1.416 FPS 159.69% Haswell
- i5 5200u 1.0g AVX2 1.457 FPS 164.30% Broadwell 双核推断的4核
- i7 6700k 1.0g AVX2 1.666 FPS 187.92% Skylake
复制代码
四、结论
更新:
简单来讲,由于AVX2的加成,x265 1.7的表现在Haswell/Broadwell上的编码效率比Sandy Bridge高了60-64%;Skylake比Sandy Bridge高了88%,提升非常可观。[这里没有4核i7对比,我只能估测一下,实际线程多利用率应该低一点,有了数据会更新之前的表格]。
超线程提升了21%。比之前那个神优化的浮点运算的33%提升略少。这是结论一。
结论二,新指令集平台的潜力未来是无限的。
我这里引用官方基于 1.4 版本的测试数据
Intel Core i7-2600K DT 4 4.5 DDR3 1600 2 14.23
Intel Core i7-3770K DT 4 4.5 DDR3 2200 2 15.02
Intel Core i7-4790K DT 4 4.4 DDR3 2000 2 17.73
Haswell相对Sandy Bridge提升27%,相对Ive Bridge提升20%。
贴吧的一个贴子关于 x265 1.7 的初版的测试说明:
haswell同频同核心,性能比Ivy高36%,比SNB高42%。
而现在我发现HSW比SNB高了60%。27%->42%->60%,差距在越来越大。
这就是我说的软件优化对新版本的支持只会越来越好。从1.4到1.7,Sandy Bridge只提升了12.13%,而Broadwell提升了45.12%。任何脱离软件优化来谈硬件性能只能得到片面的结论。所以我不是很喜欢spec的测试,而是找一些有实际意义并且有心追求效率的软件来对比硬件带来的提升。
PS,Skylake上AVX2的效率优化是一个关键,有测试显示相对于Haswell,提升了14.40%。
PPS,大家帮忙测一下吧,我的数据覆盖范围不太够。http://pan.baidu.com/s/1hq8mUQo,4核haswell应该在4分钟左右。
解压后双击运行 bench_script.bat。
第一个提示地方,随便输入你的主频,比如100*35,然后回车。第二个提示,键入 2。
这个编码测试会跑同样4遍,每一遍有一个FPS的速度结果,大家记一下给我,或者取个平均值给我就好了,谢谢啦~~不一定要截图,要4组数据或者你算出平均值给我。还有CPU实际运行是保持的频率。
谢谢所有提供测试数据的坛友,我会把一些有代表性的架构的成绩加到对比表格中~~
补充内容 (2015-11-11 15:06):
i5 6600k 4.0g 21.42 FPS from: yanfeixiang
单位性能 1.339 FPS 151.02%
补充内容 (2015-11-13 04:13):
i7 3960x 3.6g 18.55 FPS from: satanisgod
单位性能 0.859 FPS 96.85%
补充内容 (2016-1-14 06:42):
i7 5775c 4.1g 22.52 FPS from: cannibal2008 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|