PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

论指令集和超线程的作用与重要性

[复制链接]
跳转到指定楼层
1#
chungexcy 发表于 2015-9-17 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:31687|回复数:95
本帖最后由 chungexcy 于 2015-9-18 17:09 编辑

18日更新 Skylake 对比测试 (感谢royalk提供的测试数据)。
------------------------------------------------------------------------

这件事的起因是我最近在用一个waifu2x的图像放大软件,希望把一个540p的视频放大4倍到1080p。waifu2x最好是用cuda,也就是显卡来算的。但由于我没有好的独显,只能用cpu来算。(刚好有好几台电脑可以一起用,所以也不算太慢)

一开始找了一个waifu2x-caffe带图形界面的,在haswell i5上同时跑四个程序,这样一张图片平均处理18s,觉得太慢。然后找到了另一个专门针对FMA指令集与多核优化过后的命令行版本,发现性能提升到了9s。虽然性能翻倍,但还是慢。
后面我和那个FMA优化的作者邮件联系了几次,交流了一些想法,我觉得这个已经是接近最好的优化了。

回到标题为什么我说指令集和超线程重要。下面帖一下数据。
  1. 型号        运行频率     指令集       2线程           4线程            8线程           超线程提升
  2. P9700       2.8G        SSE         23.2[GFLOPS]
  3. i7 2600     3.4G        AVX                         98.7[GFLOPS]   131.6[GFLOPS]   33.44%
  4. i5 4590S    3.3G        FMA                        153.8[GFLOPS]   
  5. i7 4700MQ   2.4G        AVX                         97.1[GFLOPS]   126.1[GFLOPS]   29.90%
  6. i7 4700MQ   2.4G        FMA                        111.0[GFLOPS]   157.1[GFLOPS]   41.57%
  7. i7 5600U    2.6G        AVX                         66.3[GFLOPS]
  8. i7 5600U    2.6G        FMA                         79.2[GFLOPS]
  9. i7 6700K    4.0G        FMA                        223.4[GFLOPS]   302.7[GFLOPS]   35.50%
复制代码
前三组是我测试的,后四组数据是作者提供的,最后一组royalk提供。

换算成同频率:
  1. 型号        运行频率     指令集        2线程           4线程            8线程
  2. P9700       1.0G        SSE         8.3[GFLOPS]
  3. i7 2600     1.0G        AVX                         29.0[GFLOPS]    38.7[GFLOPS]
  4. i5 4590S    1.0G        FMA                         46.6[GFLOPS]  
  5. i7 4700MQ   1.0G        AVX                         40.4[GFLOPS]    52.5[GFLOPS]
  6. i7 4700MQ   1.0G        FMA                         46.2[GFLOPS]    65.5[GFLOPS]
  7. i7 5600U    1.0G        AVX                         25.5[GFLOPS]
  8. i7 5600U    1.0G        FMA                         30.5[GFLOPS]
  9. i7 6700K    4.0G        FMA                         55.9[GFLOPS]    75.7[GFLOPS]
复制代码

为方便阅读,下面就只用4核cpu对比了。
以二代i5的性能为标准:
  1. 型号        运行频率     指令集       4线程            8线程
  2. i7 2600     1.0G        AVX         100.00%         133.34%
  3. i5 4590S    1.0G        FMA         160.56%         
  4. i7 4700MQ   1.0G        AVX         139.34%         180.98%
  5. i7 4700MQ   1.0G        FMA         159.25%         225.46%
  6. i7 6700K    1.0G        FMA         192.75%         261.03%
复制代码

以二代i7的性能为标准:
  1. 型号        运行频率     指令集       4线程            8线程
  2. i7 2600     1.0G        AVX          74.99%         100.00%
  3. i5 4590S    1.0G        FMA         120.41%
  4. i7 4700MQ   1.0G        AVX         104.47%         135.70%
  5. i7 4700MQ   1.0G        FMA         119.43%         169.08%
  6. i7 6700K    1.0G        FMA         144.44%         195.61%
复制代码

这个软件作用就是图像放大或降噪处理,同样的功能photoshop里也提供,不过效果这个好的多(不过相应的,计算代价也高了N个数量级)。所以我认为这也不能算是非常专业的应用。Intel的新技术并非是宣传,只要能用得上,就是巨大的提升(Haswell 70%,Skylake 96%)。我之前在另一篇帖子里曾经回复过,我自己测得的Haswell在AVX上提升30+%,这次也印证了一下。

最后放一下一个在线版本,http://waifu2x.udp.jp/index.html,有兴趣的可以去玩玩。不过要说的是这个只适合与画出来的图像,比如动漫、CG等。照片处理后会比较奇怪。
具体的软件由于是命令行,而且不直观,就暂不放出。如果有想用你们的高端cpu体验下的,我再放出软件和使用说明。


补充内容 (2015-10-2 07:08):
二楼补充部分AMD CPU 测试数据

评分

参与人数 2代金券 +100 绝对值 +5 收起 理由
石头 + 100 2精
overthink + 5 我很赞同

查看全部评分

2#
chungexcy  楼主| 发表于 2015-9-17 15:59 | 只看该作者
本帖最后由 chungexcy 于 2015-9-18 09:33 编辑

占楼,如果以后帖软件和其他测试结果就在这楼。

放程序。http://pan.baidu.com/s/1hrrHW
这只是测试用,如果真有需要,请下载waifu2x-caffe,让显卡来干活。

简单运行说明:
---------------------------------------------------------------
1. 解压 waifu2x.7z 得到 cpu1 文件夹。
包含input, output, waifu2x-converter(程序本体,感谢 tanakamura,MIT开源协议 ), bat-for-cpu.exe(自己做的生成批处理.bat文件,可以批量处理input里所有图片,并保存在output中),run.bat(生成的批处理文件)。

2. 按住shift,右键cpu1文件夹,选择“在此处打开命令窗口”。

3. 键入:bat_for_cpu.exe > run.bat
(这一步做的是,扫描input中所有文件,对每一个(图片)文件生成一条执行命令,保存在run.bat中。可以右键run.bat,选择“编辑”,查看内部内容)
(我在input里面预留了一张001.jpg,供测试)
(内容示例:waifu2x-converter\waifu2x-converter_x64.exe -m scale --scale_ratio 2.00 --model_dir waifu2x-converter\models -i input\001.jpg-o output\001.jpg --disable-gpu)

4. 键入:run.bat
开始一张张处理图片,生成的文件保存在output中。命令行的最后一行信息是总运行时间和运行速度[GFLOPS]。
建议固定一个cpu频率,这样测试相对准确一些。
建议运行2次,取第二次的成绩。第一次读硬盘可能会影响速度,后面就缓存在内存了。
---------------------------------------------------------------

如果想了解更多,按住shift,右键waifu2x-converter文件夹,选择“在此处打开命令窗口”。
键入:waifu2x-converter_x64.exe -h,会给出帮助文档,请自行学习。

几个基本参数我简单讲讲,例如:
-i 001.png:             表示读取 001.png,进行处理;
-o 001_1.png:         表示结果存放为 001_1.png;
-m scale:                表示仅放大操作;(还有降噪等选项 -m <noise|scale|noise_scale>,需配合下面一项或两项使用)
--scale_ratio 2.00:   表示放大指定倍数(这里是2倍);
--noise_level <1|2>:降噪等级,1是中等,2是强(一般不建议2)
-j 8:                       如果指定,则表示以指定的线程数目运行(这里是8);
--disable-gpu:         如果指定,则表示只用CPU(如不指定,默认优先显卡。优先级 Nvidia:cuda,AMD:OpenCL,CPU:(FMA/AVX/SSE))



补充内容 (2015-10-2 06:33):
型号      运行频率  指令集  2线程   4线程 [GFLOPS]
X4 760K     1.0G     FMA    7.7     12.9
A8-5600K   1.0G     FMA              13.0
A10-7850K 1.0G     FMA              20.6
感谢Y6-0785的前两组数据。
3#
Mufasa 发表于 2015-9-17 16:08 | 只看该作者
很好的文章。

超线程和指令优化在实际应用中确实产生了可观的提升。
4#
royalk 发表于 2015-9-17 16:38 | 只看该作者
所以不要说近几代CPU没什么提升,只是新的指令集在大部分应用里你用不到。
5#
McLaren 发表于 2015-9-17 16:42 | 只看该作者
可以给个程序,回去试试看
6#
chungexcy  楼主| 发表于 2015-9-17 17:52 | 只看该作者
本帖最后由 chungexcy 于 2015-9-17 17:54 编辑
McLaren 发表于 2015-9-17 16:42
可以给个程序,回去试试看

见2楼,有地址和简易说明
7#
Cogae 发表于 2015-9-17 21:48 | 只看该作者
小部分应用环境特别有效
8#
里奥 发表于 2015-9-17 21:57 | 只看该作者
不过对于大多数人来说,真的需要为1%的应用去升级吗
9#
Y6-0785 发表于 2015-9-17 22:38 | 只看该作者
新架构、新指令集提升都很明显,有专业需求的还是值得买买买
10#
板砖财 发表于 2015-9-17 23:50 | 只看该作者
有意思,我正想写一个快速查找同一张图片的程序,可以跨越压缩比/分辨率/图片格式,判断不同的图片内容是否是同一张,正好可以考虑一下使用新指令集优化。
11#
chungexcy  楼主| 发表于 2015-9-18 01:05 | 只看该作者
板砖财 发表于 2015-9-17 23:50
有意思,我正想写一个快速查找同一张图片的程序,可以跨越压缩比/分辨率/图片格式,判断不同的图片内容是否 ...

首先瓶颈的是特征向量的运算部分。一般如果是检索,大部分时间都是向量运算。其次指令集有提升,但要写出sse/avx/fma等之间较大的区别比较难。你会遇到各种内存、缓存的瓶颈,很难将simd计算单元喂饱,要想喂饱还要利用超线程。你可以去参考那个原作者在github上的项目,waifu2x-converter和另一个matmul矩阵乘法优化,看看他是怎么用指令集的。
12#
chungexcy  楼主| 发表于 2015-9-18 02:49 发自PCEVA移动客户端 | 只看该作者
royalk 发表于 2015-9-17 16:38
所以不要说近几代CPU没什么提升,只是新的指令集在大部分应用里你用不到。 ...

你不是有个skylake的i7吗,要不来测试一下?
13#
overthink 发表于 2015-9-18 09:22 | 只看该作者
本帖最后由 overthink 于 2015-9-18 09:24 编辑
里奥 发表于 2015-9-17 21:57
不过对于大多数人来说,真的需要为1%的应用去升级吗

支持新指令集的软件会越来越多的,目前用不上不代表以后用不上。


还记得当年AMD巴顿 CPU由于不支持SSE2、SSE3 而无法运行新版本Photoshop么
14#
royalk 发表于 2015-9-18 11:00 | 只看该作者
chungexcy 发表于 2015-9-18 02:49
你不是有个skylake的i7吗,要不来测试一下?

6700K,默认频率
功耗很够力,12V直接爆到9.3A了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
15#
chungexcy  楼主| 发表于 2015-9-18 11:07 | 只看该作者
royalk 发表于 2015-9-18 11:00
6700K,默认频率
功耗很够力,12V直接爆到9.3A了

提升幅度15%左右,看来提升比我想象的好些,之前认为10%。不过112w的功耗也是够高,果然E5为了能效,必须限制avx的频率。。。

16#
royalk 发表于 2015-9-18 11:13 | 只看该作者
chungexcy 发表于 2015-9-18 11:07
提升幅度15%左右,看来提升比我想象的好些,之前认为10%。不过112w的功耗也是够高,果然E5为了能效,必须 ...

可能跟内存也有一定关系,DDR4-2133
回头我换到Z170上再跑一次吧
17#
chungexcy  楼主| 发表于 2015-9-18 11:16 | 只看该作者
本帖最后由 chungexcy 于 2015-9-18 11:17 编辑
royalk 发表于 2015-9-18 11:13
可能跟内存也有一定关系,DDR4-2133
回头我换到Z170上再跑一次吧

这个基本和内存无关,我认为已经优化到极限了。源代码中我看到他把能用的所有avx寄存器全部用上了,内存不是瓶颈。
我还试过4570r,128m缓存的那个,单位频率性能几乎没差别。
18#
547737657 发表于 2015-9-18 11:20 | 只看该作者
有个疑问,谁能提供下AVX与FMA功耗、发热对比测评?
假设支持FMA的芯片过p95 27.9是否安安稳稳过waifu2x测试?
19#
gtx9 发表于 2015-9-18 11:26 | 只看该作者
overthink 发表于 2015-9-18 09:22
支持新指令集的软件会越来越多的,目前用不上不代表以后用不上。

因为吃过亏,所以现在AMD的指令集比INTEL还多



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
20#
az6338890 发表于 2015-9-18 11:29 | 只看该作者

评分

参与人数 1绝对值 +1 收起 理由
chungexcy + 1 有兴趣的可以去看看。其实你能在他的第三帖.

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部