PTT推薦

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

看板PC_Shopping標題Re: [閒聊] AVX指令集實際應用是甚麼功能?作者
YHVH
(yehveh)
時間推噓63 推:63 噓:0 →:146

※ 引述《superRKO (挖洗RKO)》之銘言:
: 小弟菜雞
: 最近看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 還不是個咖小 @.@

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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.194.35 (臺灣)
PTT 網址

MrDisgrace 07/16 16:36專業推

mikapauli 07/16 16:41所以都用V100的話就沒有問題了是嗎?

ccbbaa 07/16 16:51這篇有歷史性 推一下

randeon5566 07/16 16:53推整理

yymeow 07/16 16:54專業文必推

a58524andy 07/16 16:55清楚 推

hankower 07/16 16:57專業

blackwindy 07/16 16:57對只打遊戲的根本雞肋 頂多模擬器有用

palapalanhu 07/16 17:01專業

waiter337 07/16 17:04好像很厲害 快推

oopFoo 07/16 17:07i9-7900x開始就有兩組AVX512 pipe。可以看到很明顯

Severine 07/16 17:09推這篇的歷史 以前的確MMX/SSE就夠嚇人了

oopFoo 07/16 17:09的效能提昇。Icelake才有avx512,cometlake是沒有的

oopFoo 07/16 17:11普通USER要碰AVX512現在只能用筆電的Icelake

oopFoo 07/16 17:12因為Intel太喜歡區隔市場,很多人只碰低階Xeon Gold

oopFoo 07/16 17:13那只有一組AVX512 pipe。所以才會誤會AVX512對比AVX

oopFoo 07/16 17:15沒有性能提昇。但AVX512比avx2好用太多了,光是

tonyian 07/16 17:15很不幸的全世界使用普通cpu會用到這個指令的可能比

tonyian 07/16 17:15你想的還少

oopFoo 07/16 17:16gather/scatter就讓寫程式容易許多。說AVX512不好的

oopFoo 07/16 17:16是真的沒寫過vector的程式。

arrenwu 07/16 17:20這幾篇都寫了不少有意思的AVX的知識

arrenwu 07/16 17:21但其實大家想知道的是:那些應用AVX的幫助大?

arrenwu 07/16 17:21這些應用我們有在用嗎?

oopFoo 07/16 17:21還有ARM現在有SVE,SVE2。所以還是有在增加指令集

ggirls 07/16 17:22不是懷疑你沒用。是怕我家風扇不夠用。

oopFoo 07/16 17:25ffmpeg,常見的轉檔程式就支援avx512。

oopFoo 07/16 17:25https://bit.ly/30dcQjy

arrenwu 07/16 17:26是,影片轉檔確實是AVX最常見的運用之一

arrenwu 07/16 17:27但這塊不就是有人在質疑GPU會取代的部分?

JoyRex 07/16 17:28CPU能靠2PASS提升畫質,GPU不行啊畢竟不能未卜先知

dxzy 07/16 17:29看不懂但推

hn9480412 07/16 17:29那AMD的SSE4a是拿來幹嘛的?

arrenwu 07/16 17:29轉檔部分其實爭議點在 低碼率 表現

arrenwu 07/16 17:29以前h264的時候,GPU要相當高碼率才會有不錯的水準

arrenwu 07/16 17:30但近期我所看到的RTX系列的轉檔表現也比以前強超多

bubunana 07/16 17:30其實你不用自己用 某os會幫你調用 從mmx sse 乃至後

bubunana 07/16 17:30來avx 你不做 他們就在某耗電規格或者反應時間卡你

bubunana 07/16 17:30讓你拿不到他們認證 除非他們有特殊目的才放行

oopFoo 07/16 17:31vectorized columnar olap database

arrenwu 07/16 17:34我現在比較想得到的是數值分析軟體,這個AVX的優點

bubunana 07/16 17:34拿Q8400跑跑win7以後OS 那種延遲感是非常顯而易見的

arrenwu 07/16 17:34就很大

oopFoo 07/16 17:35用在"富岳",全世界最快的超級電腦,完全不用GPU

friedpig 07/16 18:04好奇os拿來幹嘛

KotoriCute 07/16 18:13專業推

BlackCoal 07/16 18:27看不懂還是推

BlackCoal 07/16 18:28借問一下,以前聽過3DNow!好像很屌,後來怎麼都沒聽

BlackCoal 07/16 18:28到了

a27417332 07/16 18:30推 這篇講的比上一篇好太多了

gohow 07/16 18:31我好像又多懂一點點了

doom3 07/16 18:39有懶人包有推

bubunana 07/16 18:40上面兩位問題本身關鍵字就有 wiki跟GOOGL得到答案

bubunana 07/16 18:40甚至有完整文件說明 怕陷入引戰 就這樣

andy5656 07/16 18:42

JoyRex 07/16 18:563DNow!的3000+打的噴火龍3G吱吱叫

JoyRex 07/16 18:57那時候拿3000+配6600GT玩全民公敵正夯

superRKO 07/16 18:58太專業了 但我要去消化一下

AKSN74 07/16 19:07專業推一個,也順便幫我複習了一些指令集演進

wres666 07/16 19:12在用matlab的時候感覺很明顯啦,真十代icelake比起

wres666 07/16 19:12同學的牙膏十代快多了

Jmoe 07/16 19:24專業推

Shauter 07/16 19:32上一篇比這篇好很多吧....這篇.....

aegis43210 07/16 19:37上一篇講未來,這篇講古

MK47 07/16 19:52其實都是很好的分享 不需要去分高下 人家願意分享就

MK47 07/16 19:52不錯了

k078787878 07/16 19:53嗯聽不懂

os653 07/16 19:54根本不是在講同一件事,哪有啥好比?

os653 07/16 19:55是說如果AVX512真的這麼好,編譯器要聰明到自動調用

os653 07/16 19:55用起來自然就會讓使用者有感,現在就是大多使用者無

os653 07/16 19:56感,才會讓人質疑它的價值

pig 07/16 20:16AVX512被嫌棄的地方在於降速求控球會拖累其他人

Shauter 07/16 20:19這篇問題很大阿 什麼每次都是為了擴充處理資料能力

Shauter 07/16 20:19是不是連AMD的指令集都不認識? 而且AES還是AMD強項

goldie 07/16 20:20專業推

netburst 07/16 20:243dnow都被sse幹掉了還在打噴火龍??

jasonkey123 07/16 20:29k6-3內建3dnow跑3d遊戲還是被低階celeron打趴...

ILike58 07/16 20:39買這些指令集的好處不就是有intel花錢去幫你弄compi

ILike58 07/16 20:39ler這髒活?不然要自己優化嗎?

a1234567289 07/16 20:41這篇很好 我在上篇留言想打的這裡都解釋的很清楚

JoyRex 07/16 20:49不知道哩,3000+跑全民公敵比噴火龍3G還要順

JoyRex 07/16 20:50不過燒光碟還是乖乖拿有HT的噴火龍比較安全

Winux 07/16 21:03推這篇

Winux 07/16 21:04AMD比較成功的指令集就x86-64而已

Winux 07/16 21:05其他都是跟著Intel走

Winux 07/16 21:06以前AMD也有想弄自己的SSE5 intel直接放話不會去支

Winux 07/16 21:07援AMD SSE5 弄自己的AVX最後也真的沒人理AMD的SSE5

Winux 07/16 21:08後來AMD處理器一樣要去相容intel AVX

Winux 07/16 21:09上面說的AES也是intel提出的指令集

phoenix5097 07/16 21:25專業推

a58524andy 07/16 21:28市佔夠高就是任性

aegis43210 07/16 21:31以前i皇市佔高沒人理A家,但再牙膏下去,可能以後也

aegis43210 07/16 21:31換他沒人理…

KotoriCute 07/16 21:33AVX512是大客戶有需求intel才放進去的

cory8249 07/16 21:38專業推

twosheep060307/16 21:39簡單來說追求通用計算的話就會繼續留著這堆電晶體

hn9480412 07/16 21:45所以FMA是AMD這邊提出來的SIMD?

ltyintw 07/16 21:59因該是說fma是從sse5拆出來的 而sse5是amd提出的

kimisawa 07/16 22:23轉檔喔 現在的i被amd單純用核心按著摩擦

kimisawa 07/16 22:24Amd想推指令集大多不太成功因為基數太小

mmonkeyboyy 07/16 23:44都有推自己的MKL

mmonkeyboyy 07/16 23:45AMD就是菜雞市場小 別人說什麼就聽話啊

mmonkeyboyy 07/16 23:46尤其大量的運算上 AMD沒有吃下份額 出這種接近專

mmonkeyboyy 07/16 23:46用指令集 別說硬體不見得跟得上 軟體都趴了先

mmonkeyboyy 07/16 23:47降速求控球 都如球球是好球也不錯

mmonkeyboyy 07/16 23:47你可以想著種花聯盟來就還是一堆壞球

mmonkeyboyy 07/16 23:48Maddux來你很快就早安午安晚安

protoss 07/16 23:48所以簡單說是一般人看不到整個市場的需求?所以無法

protoss 07/16 23:49了解intel的決策...如果一味追求通用就會變成GPU界

protoss 07/16 23:49的AMD?

arrenwu 07/17 00:02AMD GPU的問題跟追求通用沒啥關係

arrenwu 07/17 00:02NV CUDA本身就是往通用方向邁進的設計

mmonkeyboyy 07/17 00:04這東西還是要算使用率的 對一般民眾日常來用

mmonkeyboyy 07/17 00:04最常見的就是OS 轉檔 會用到

friedpig 07/17 00:04AMD菜到連聽話的機會都沒有吧 只能事後看人家的東

friedpig 07/17 00:04西乖乖做了

KotoriCute 07/17 00:06當初x86-64有機會成功,也是因為intel內部在路線之

KotoriCute 07/17 00:06爭的內鬥

mmonkeyboyy 07/17 00:07而且早期板本 多開幾個 那速度根本對半

protoss 07/17 00:07不過CPU二十年前歷經一波多頭...大概一些common的部

KotoriCute 07/17 00:07Intel當時決定押寶IA64 ,放棄了他們自己64位元方案

protoss 07/17 00:07份也做到差不多了...是時候去服務其他的20%這樣?

mmonkeyboyy 07/17 00:09理論上 在HPC應用上 會快60X

friedpig 07/17 00:09其實這件事情就是最大謬誤阿 人家又不是做一堆ASIC

friedpig 07/17 00:09原本的就沒優化 到底為啥以為都只能做一件事情 人

friedpig 07/17 00:09家人多的是

mmonkeyboyy 07/17 00:09實際上HPC 上 我還真沒看過這麼高的

arrenwu 07/17 00:09我覺得Intel比較大的麻煩是他們的AVX比AMD熱很多XD

arrenwu 07/17 00:10我自己算是常常使用數值分析軟體的人,樂見AVX進展

mmonkeyboyy 07/17 00:10大家都想搶HPC市場啦

friedpig 07/17 00:11只是牙膏王爽太久 架構發現不太行的時間比AMD晚

friedpig 07/17 00:11設計完的新產品本來就好幾年 又遇到製程大烙塞才看

friedpig 07/17 00:11起來好像只能吹這些舊世代最後的feature

mmonkeyboyy 07/17 00:11我的工作算有點廣 做點 cpu 設計 做點底層 做數值

arrenwu 07/17 00:12我是很想幫AMD吹AVX,但一般人用到的還真的沒那麼多

mmonkeyboyy 07/17 00:12分析的軟體 偶爾跑 hpc

friedpig 07/17 00:12新架構的東西也不是都沒產品 只是烙塞到還沒辦法大

friedpig 07/17 00:12量商業化而已

mmonkeyboyy 07/17 00:12自己結論就是 專業是事還是batch交給專業單元

arrenwu 07/17 00:13只是AVX目前的應用都還算滿穩的

mmonkeyboyy 07/17 00:13現在的GPU就能做到雙精度了 (雖然目前最大宗的是 16

arrenwu 07/17 00:13一般軟體裡面使用GPU加速的機能都滿鳥的

mmonkeyboyy 07/17 00:14其實512的不太穩 .... 他造成了蠻多其他單元的問題

protoss 07/17 00:14現在這麼多YTer...這類指令集在工作處理上有幫助吧?

mmonkeyboyy 07/17 00:14要轉yter 你買台 ipad pro比較快....

arrenwu 07/17 00:14@protoss 這就要看GPU轉檔現在怎樣了

arrenwu 07/17 00:15不過剪輯應該還是會吃到AVX

arrenwu 07/17 00:15至少我看Adobe Cloud那些應用,AVX仍有很大幫助

protoss 07/17 00:16我以為剪輯預覽會吃到GPU...匯出則CPU/GPU都可以選?

arrenwu 07/17 00:16真要我說的話...我當下看到Linus狂噴AVX挺意外的

mmonkeyboyy 07/17 00:16我說 ipad pro 比較CP值高 逗逼就不說了 那個雲

friedpig 07/17 00:17GPU雙精度要錢要電晶體啊 老黃精美的運算卡價格hen

friedpig 07/17 00:17刺激

mmonkeyboyy 07/17 00:17我不是很清楚他到底是那裡被陰到了

mmonkeyboyy 07/17 00:18不過我自己被陰過 至今還無法解 (應該)

friedpig 07/17 00:18就不喜歡特規吧 而且可能linux kernal沒那麼大需求

friedpig 07/17 00:18 ms玩比較多怪招吧

mmonkeyboyy 07/17 00:21老黃那個是單精搞雙精吧 (如果我沒有記錯 )

mmonkeyboyy 07/17 00:22老黃最厲害的是對市場反應快 很會recycle

friedpig 07/17 00:23運算卡好像真的有花錢砸fp32吧 所以也反應在成本上

friedpig 07/17 00:23了 價差這麼大

mmonkeyboyy 07/17 00:25fp32單精啊~~ 他現在本來就單精

friedpig 07/17 00:2564才對

mmonkeyboyy 07/17 00:25然後往上往下 再做變化啊~

mmonkeyboyy 07/17 00:26純64的我到是不知道 最近沒去看他們的 arch了

friedpig 07/17 00:29不過老黃現在滿腦子AI 雙精度根本賺不到錢 誰管你

friedpig 07/17 00:29 現在是tf32的時代了

mmonkeyboyy 07/17 00:31答對哦~~~~AI好撈啊 看看那個精美的DGX A100

mmonkeyboyy 07/17 00:31好香

friedpig 07/17 00:32不過tf32真的蠻有創意的 真的AI魔人耶

mmonkeyboyy 07/17 00:34還可以啦 等那天不用GD他就可以收攤了啊

friedpig 07/17 00:36老黃現在除了硬體以外 軟體社群也深耕的夠好就是

friedpig 07/17 00:36要抽離也是很痛 其實蠻類似牙膏王在做的事情

mmonkeyboyy 07/17 00:42老黃九命怪貓 他只要還在NV就是厲害

mmonkeyboyy 07/17 00:42不過他肯定會被三星坑 (聰明反被聰明誤)

mmonkeyboyy 07/17 00:43XDXD 各位等著看 XD

friedpig 07/17 00:46人家真正重中之重還是乖乖跪舔GG啊 A100那種怪物

friedpig 07/17 00:46三星在過個十年可能都做不出來(?

KotoriCute 07/17 02:53linus不爽的只有AVX512,超吃晶片面積一般用戶卻幾

KotoriCute 07/17 02:53乎用不到

KotoriCute 07/17 02:54AVX指令集還是有必要,高性能處理器和指令集也脫不

KotoriCute 07/17 02:54了關係

kuma660224 07/17 06:03真正讓它賭爛是AVX512太耗電會降頻

kuma660224 07/17 06:04為了1種指令能高性能,其他全部低性能

kuma660224 07/17 06:04導致不見得比較快

mmonkeyboyy 07/17 07:44降頻降不小外 還有另外啟動時間 算下去cost不低

mmonkeyboyy 07/17 07:44AVX反到是還好 綜合性下去性能有提升

mmonkeyboyy 07/17 07:45之前其實有蠻多文章講到底會降多少 點個十顆左右

mmonkeyboyy 07/17 07:45頻率剩下一半 = ="

birdy590 07/17 10:19他又沒反對 AVX2...是反對 AVX512, 覺得賺的不夠賠

iorittn 07/17 11:32

NoobCV 07/17 13:52雖然看不太懂但專業推

kuma660224 07/17 22:27什麼是你沒用它是有點錯誤

kuma660224 07/17 22:28因為它有降頻問題,你軟體除非跑分

kuma660224 07/17 22:28否則不可能永遠一直跑AVX512

kuma660224 07/17 22:28其實指令因為降頻全部變慢了

kuma660224 07/17 22:29其他指令

kuma660224 07/17 22:29所以你可能努力用它結果賠的比賺得多

a000000000 07/17 23:28GPU砍FP64主要還是商業考量

a000000000 07/17 23:28而且從老黃maxwell以後一去不回頭

a000000000 07/17 23:30然後牙膏又差不多獨佔x86很多年 即使現在也是寡佔

a000000000 07/17 23:30大家應該是看不太到擺脫這些東西的一天

kqalea 07/23 17:46五年前說GPU交換資料太慢我可能信

kqalea 07/23 17:51現在2020 pcie gen4 要DDR4 4000才餵的飽

kqalea 07/23 17:52AVX512就是雞肋~食之無味棄之可惜

kqalea 07/23 18:06而且你拿一顆40幾萬的CPU比2080會不會太看得起老黃

kqalea 07/23 18:09V100 一張30萬 DP 是7TFLOPS 足足是8280三倍有找