C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) Lubuntu 16.04 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) gcc 5.4.0 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) pthread, SSE1-4/AVX 问题(Question): 最近帮忙作code review,看到有人用SSE做计算提高效能。 可是还用多执行绪来跑SSE。 我看了一下,Intel core i7 是每个core有 - 8个 128-bit XMM暂存器(SSE用) - 16 个 256/512-bit 的 YMM(YMM0-YMM15) 暂存器(AVX用) 不管是XMM或YMM空间都很有限。 如果我写个程式(prog)使用数个thread同时跑, 每个thread都要用满8个XMM暂存器,那麽: 1.如果两个thread占用一个core,会不会因为两个thread都抢着用XMM使得效能大幅降低? 我是说因为一个thread要用XMM就把另一个thread放在XMM里的data踢出去? (因为XMM load/unload也是有点耗时间) 2.如果刚好某个背景程式或浏览器也在同时使用XMM, 那原本prog的效能是不是也会受影响? 3.如果同时使用XMM/YMM的process会互相影响, 有无办法可以侦测XMM/YMM是否被使用(如果在使用中我就用普通方法)? 4. 如果是ARM上面的SIMD/NEON,其效应也是如上? 感谢回答。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 90.27.42.14
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1478978113.A.432.html
1F:推 LiloHuang: context switch 会产生的状况,无论 XMM 或 GPR 都会有 11/13 09:07
2F:→ LiloHuang: SIMD + MT写得好应该是会更快,每颗核心都有独立的 XMM 11/13 09:09
3F:→ LiloHuang: 建议用 Intel VTune 做更多的性能分析 11/13 09:09
4F:→ MOONRAKER: 还满幽默的,写asm吗?不然怎麽知道用满全部暂存器。 11/13 12:49
我就是不懂暂存器是怎麽管理的, 如果我一次load 10个它会怎麽搞?
5F:→ Caesar08: 1指的不就是thread context switch? 11/13 15:37
我对pthread不熟,不知道pthread会不会对同一个process的threads 做切换(无sleep的情况下),一时不知道怎麽找关键字。 ※ 编辑: wtchen (90.27.42.14), 11/13/2016 16:53:16 ※ 编辑: wtchen (90.27.42.14), 11/13/2016 16:54:44
6F:推 littleshan: 你是要问 hyper-thread 是否对 xmm 指令集有效吗? 11/13 19:20
7F:→ littleshan: 如果不考虑 hyper-threading,演算法又有良好平行化 11/13 19:22
8F:→ littleshan: 那 2 core 跑 2 thread 当然会比较快 11/13 19:22
9F:→ littleshan: 1 core 跑 2 thread 因为多了 overhead 就会慢一点 11/13 19:22
那如果hyper-thread的情形下, xmm会不会因为thread交互进行而把增加load/store的手续? 因为xmm只有8个可用.... ※ 编辑: wtchen (90.27.42.14), 11/13/2016 20:29:16
10F:推 LiloHuang: 假设没有 HT 的情况,每个 core 都有自己的一组暂存器 11/13 22:14
11F:→ LiloHuang: 假设有 HT 的情况,每个 logic processor 都有自己的 11/13 22:14
12F:→ LiloHuang: architecture state,没记错里面也有各自的 GPR 跟 XMM 11/13 22:19
13F:→ LiloHuang: 你在问题多数都跟 context switch 怎样运作有关 11/13 22:21
14F:→ LiloHuang: 实务上 SIMD + MT 性能会增加,建议实际去跑量测时间 11/13 22:23
15F:→ LiloHuang: 你的所谓 SIMD 暂存器很有限,其实通用暂存器也很有限 11/13 22:26
16F:→ LiloHuang: 相同的问题,在没有把程式改成 SIMD 之前不就有了 :P 11/13 22:27
17F:→ LiloHuang: 反而是得多注意 false sharing 的问题比较实际 11/13 22:27
18F:→ Caesar08: context switch的部分会根据作业系统而定吧,例如 11/13 22:38
19F:→ Caesar08: 一个有6 core的CPU,是一次一个process,然後可以使用6 11/13 22:39
20F:→ Caesar08: thread,还是一次6个process,每个只能使用一个thread 11/13 22:40
21F:→ Caesar08: 如果在multi core的machine上面,那情况就更复杂,还要 11/13 22:40
22F:→ Caesar08: 考虑thread被移到另一个CPU的情况上 11/13 22:41
23F:推 LiloHuang: 同意 context switch 得看系统,标题是讨论 SSE + MT 11/13 22:41
24F:→ LiloHuang: 我就来贴个 Intel 的一篇文章 https://goo.gl/qegnRl 11/13 22:42
25F:→ LiloHuang: 可以自己看看 SIMD + MT 有没有帮助...看数据最清楚 11/13 22:43
所以看起来如果能弄到一个Core一个thread可以有最大效能。 如果有context switch,那xmm里的变化(load/store)被变成context switch的成本。 这样了解了。 话说回来我也看了对方做的SSE效能测试的数据,变化超大,据说跟CPU散热有关。 还真的挺有趣。 ※ 编辑: wtchen (90.27.42.14), 11/13/2016 23:13:00
26F:→ jaid: 可以用affinity 11/14 04:22







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP