Re: [閒聊] AVX指令集實際應用是甚麼功能?

PC購物

標籤:閒聊
55430

: 小弟菜雞
: 最近看INTEL的AVX512被嘴爆了,I皇QQ
: 又看了某幾集極客灣他們介紹說烤機烤AVX,I家的U會變很燙,而A的反而不會
: 然後這幾年有聽到AVX有實際在遊戲上應用的就刺客教條-奧德賽
: 但還是想問一下這AVX指令集的實際應用到底是甚麼?

AVX 是做什麼用的?
簡單一句:向量資料計算
   仔細一點:INT8x32/16x16/32x8/64x4 加減乘飽和比較
FP32x8/64x4 四則運算﹑根號﹑逼近倒數...
FP32/64 <-> INT32
其他還有 bitwise ops, permute, mask, broadcast...
給 GPU shader 算會:
         花太多步驟在交換資料
 或是計算流程太複雜的
都可以給 AVX 算



對用 AVX 的人來說,說 AVX 這東西沒用實際上是:

『不是它沒用,是你沒 用』
    ^在


Intel x86 有一長串 SIMD 指令集擴充歷史
每次都是為了擴充處理資料能力的價值(Intel Inside)加的

1. 將近三十年前的 Pentium 時代
Intel 為了要讓 x86 有 DSP 處理整數域向量資料的功能
所以加了 64bit INT8x8/16x4/32x2/64x1 MMX 指令集,造就 PentiumMMX
那時候如果沒 MMX 而用整數指令做 filter 或 converter 譬如做色域轉換
效率最差可能剩下不到一成
在這之前,TI 爽爽賺賣很貴的 DSP, Creative Labs 也在賺賣很貴的 SB...

2. 二十幾年前的 Pentium!!! 時代
一堆初階 3D 顯示卡出現,只有算整數域像素顏色卻沒有計算浮點向量的 GPU
要是沒有 FP32x4 的 SSE 而用 x87 處理頂點向量,你只會得到少了 3/4 以上
多邊形的 3D 畫面

3. 二十年前第一個有 ucode cache 的 x86 Pentium4
是該把 MMX & x87 移給有"正常"通用暫存器的 SSE 做了,所以有了 SSE2
SSE2 包山包海 FP32/64, INT8/16/32/64 都有,只是不包超越函數還有那 FP80
x87 也開始慢慢淡出浮點數處理的功能

4. 過沒多久更燙的 Prescott Pentium4
Intel 開始加了一些可以直接處理同個暫存器內相鄰浮點數對加減的指令集 SSE3
SSSE3 則是把相同功能又做到了處理整數資料上
這時候的 GPU programmable shader 還不是個咖小 @
[email protected]


5. 十幾年前大賣的 Core2
Intel 把向量的分量遮罩選擇功能做進了 SSE4.1 ,也補了整數的最大最小值指令
好不容易這時候 GPU 終於開始出頭了

6. 第一代 Core 處理器出了
GPU 開始標榜各式各樣的 shader
Intel 把腦筋動到字串比對&糾錯碼上,所以又做了 SSE4.2

7. 十年前第一代 Core 處理器改製程
想想處理加解密用一般指令計算還是要很久,所以 Intel 把加解密的 AES & GF
用到的無進位長整數乘法加進來
要 GPU 加這種功能?吃x比較快...

8. 128bit SSE1/2/3/4.1
這些處理 FP32x4 是可以,但是對 FP64x4 卻只剩下一半效能
也不能指望那時連 FP64 都不知道是啥的 GPU
於是 Intel 在第二代的 Core i7 把 AVX 做上去了
終於...終於... 多了一倍數量&寬度的暫存器
目的暫存器也不需要再跟其中一個來源暫存器共用了
但這兩倍寬只局限於處理浮點數

9. 為什麼 GPU 都喜歡偷精確度用 FP16 ???
這樣跟 CPU 交換資料很麻煩咧...
所以 Intel 加了 FP16 在第三代 Core 處理器,做 FP16<->FP32 轉換

10.馬的8.啦
為什麼 AVX 256bit 暫存器只能用在浮點數,那整數域的咧???
所以 Intel AVX2 就把整數的部分也補上了,在第四代 Core 處理器上
---------------------------------------------------------------------
然後...
然後就沒有了...新 SIMD 指令集一段時間
---------------------------------------------------------------------
11.做過超長寬度的 SIMD 處理器 Larrabee & Xeon Phi 的
Intel 在第六代 Core 的 Xeon 版上做了 AVX512 (不是全套,只是部分類別)
這東西比之前的至少好用在
a.多了獨立的 64bit 遮罩暫存器八個
(以往要遮罩結果,得拿完整的 SSE/AVX 暫存器來用)
可以決定對目的暫存器各分量是否要寫入運算結果或是清除
b.暫存器數量跟寬度也多 AVX2 一倍
譬如 AVX2 要實作 SHA3 得要額外記憶體放常數表或中間值
AVX512 可以全塞進暫存器裡



所以!!!

如果要說 AVX512 沒必要
要嘛是額外加價買自己用不到的
要嘛像第十代 Core 處理器,只做了一組 512bit FP pipe 給 AVX512 FP 指令用
搞得 AVX512 FP peak performance 跟 AVX2 一樣

要是用得到AVX512
這東西比現在標榜 10+TFlops 但是只有 FP16/32 的 GPU 用途更多
GPU 廠商會說 GPU 浮點運算超強,但也只強在 FP16/FP32
一旦是其他精確度,衰減的幅度就比有 AVX 的 CPU 要大很多
不像 CPU 是對半砍,而是對半砍"五次"
如 FP64
2nd gen Xeon scalable 8280 的 AVX512 比 RTX2080 Titan
前者 peak 超過 2TFlops, 後者只有前者 1/4 不到

CPU 自始至終追求的都是通用度
所以在某個 coprocessor 還沒有必要被獨立特化出專門用途之前
我們就只得拿 CPU 來做
換句話說至少我們還有個啥都行但不是最快的貨色能擋
如果現在出了一個便宜的 x86 CPU ,但代價是把所有 SIMD 指令砍掉 (只留 x87)
各位還會想買單嗎?

至於 PPC 的 Altivec 跟 ARM 的 Neon
嗯...指令集都固定長度了是能加多少新的???
萬年標配 FP32x4...
所以我們該感謝 Intel 訂 x86 是可變長的指令集 lol
讓我們不知道啥時才能擺脫它...


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.194.35 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1594888051.A.745.html
MrDisgrace1樓專業推 07/16 16:36
mikapauli2樓所以都用V100的話就沒有問題了是嗎? 07/16 16:41
ccbbaa3樓這篇有歷史性 推一下 07/16 16:51
randeon55664樓推整理 07/16 16:53
yymeow5樓專業文必推 07/16 16:54
a58524andy6樓清楚 推 07/16 16:55
hankower7樓專業 07/16 16:57
blackwindy8樓對只打遊戲的根本雞肋 頂多模擬器有用 07/16 16:57
palapalanhu9樓專業 07/16 17:01
waiter33710樓好像很厲害 快推 07/16 17:04
oopFoo11樓i9-7900x開始就有兩組AVX512 pipe。可以看到很明顯 07/16 17:07
Severine12樓推這篇的歷史 以前的確MMX/SSE就夠嚇人了 07/16 17:09
oopFoo13樓的效能提昇。Icelake才有avx512,cometlake是沒有的 07/16 17:09
oopFoo14樓普通USER要碰AVX512現在只能用筆電的Icelake 07/16 17:11
oopFoo15樓因為Intel太喜歡區隔市場,很多人只碰低階Xeon Gold 07/16 17:12
oopFoo16樓那只有一組AVX512 pipe。所以才會誤會AVX512對比AVX 07/16 17:13
oopFoo17樓沒有性能提昇。但AVX512比avx2好用太多了,光是 07/16 17:15
tonyian18樓很不幸的全世界使用普通cpu會用到這個指令的可能比 07/16 17:15
tonyian19樓你想的還少 07/16 17:15
oopFoo20樓gather/scatter就讓寫程式容易許多。說AVX512不好的 07/16 17:16
oopFoo21樓是真的沒寫過vector的程式。 07/16 17:16
arrenwu22樓這幾篇都寫了不少有意思的AVX的知識 07/16 17:20
arrenwu23樓但其實大家想知道的是:那些應用AVX的幫助大? 07/16 17:21
arrenwu24樓這些應用我們有在用嗎? 07/16 17:21
oopFoo25樓還有ARM現在有SVE,SVE2。所以還是有在增加指令集 07/16 17:21
ggirls26樓不是懷疑你沒用。是怕我家風扇不夠用。 07/16 17:22
oopFoo27樓ffmpeg,常見的轉檔程式就支援avx512。 07/16 17:25
arrenwu29樓是,影片轉檔確實是AVX最常見的運用之一 07/16 17:26
arrenwu30樓但這塊不就是有人在質疑GPU會取代的部分? 07/16 17:27
延伸閱讀
[閒聊] HP怎麼可以這麼爛
[閒聊] VA面板怎麼都做曲面的?因成本低還是好賣?
[閒聊]維修價格是原價快要三倍的路由器
[閒聊] 三星奧德賽G9 申請換貨心得
Re: [閒聊] AVX指令集實際應用是甚麼功能?
[閒聊] AVX指令集實際應用是甚麼功能?
[閒聊] 一些關於 intel 和 AMD的傳聞 from reddit
[閒聊] 去某x人店內組電腦跟消費被搞到很不悅