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/m.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