AVX指令集實際應用是甚麼功能? - 3C

Table of Contents

※ 引述《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
讓我們不知道啥時才能擺脫它...


--

All Comments

Charlotte avatarCharlotte2020-07-18
專業推
Susan avatarSusan2020-07-19
所以都用V100的話就沒有問題了是嗎?
Candice avatarCandice2020-07-21
這篇有歷史性 推一下
Skylar DavisLinda avatarSkylar DavisLinda2020-07-24
推整理
Jacob avatarJacob2020-07-25
專業文必推
Faithe avatarFaithe2020-07-26
清楚 推
Jessica avatarJessica2020-07-31
專業
Dora avatarDora2020-08-01
對只打遊戲的根本雞肋 頂多模擬器有用
Damian avatarDamian2020-08-05
專業
Andrew avatarAndrew2020-08-05
好像很厲害 快推
Rae avatarRae2020-08-05
i9-7900x開始就有兩組AVX512 pipe。可以看到很明顯
Yedda avatarYedda2020-08-07
推這篇的歷史 以前的確MMX/SSE就夠嚇人了
Leila avatarLeila2020-08-09
的效能提昇。Icelake才有avx512,cometlake是沒有的
Blanche avatarBlanche2020-08-13
普通USER要碰AVX512現在只能用筆電的Icelake
Eartha avatarEartha2020-08-16
因為Intel太喜歡區隔市場,很多人只碰低階Xeon Gold
Ina avatarIna2020-08-19
那只有一組AVX512 pipe。所以才會誤會AVX512對比AVX
Iris avatarIris2020-08-21
沒有性能提昇。但AVX512比avx2好用太多了,光是
Anonymous avatarAnonymous2020-08-23
很不幸的全世界使用普通cpu會用到這個指令的可能比
你想的還少
Puput avatarPuput2020-08-26
gather/scatter就讓寫程式容易許多。說AVX512不好的
是真的沒寫過vector的程式。
Faithe avatarFaithe2020-08-30
這幾篇都寫了不少有意思的AVX的知識
Wallis avatarWallis2020-09-01
但其實大家想知道的是:那些應用AVX的幫助大?
這些應用我們有在用嗎?
Blanche avatarBlanche2020-09-03
還有ARM現在有SVE,SVE2。所以還是有在增加指令集
Catherine avatarCatherine2020-09-07
不是懷疑你沒用。是怕我家風扇不夠用。
Anonymous avatarAnonymous2020-09-07
ffmpeg,常見的轉檔程式就支援avx512。
https://bit.ly/30dcQjy
Selena avatarSelena2020-09-12
是,影片轉檔確實是AVX最常見的運用之一
Ina avatarIna2020-09-14
但這塊不就是有人在質疑GPU會取代的部分?
Gilbert avatarGilbert2020-09-17
CPU能靠2PASS提升畫質,GPU不行啊畢竟不能未卜先知
Tom avatarTom2020-09-17
看不懂但推
Yuri avatarYuri2020-09-17
那AMD的SSE4a是拿來幹嘛的?
Daph Bay avatarDaph Bay2020-09-21
轉檔部分其實爭議點在 低碼率 表現
以前h264的時候,GPU要相當高碼率才會有不錯的水準
Odelette avatarOdelette2020-09-23
但近期我所看到的RTX系列的轉檔表現也比以前強超多
Puput avatarPuput2020-09-27
其實你不用自己用 某os會幫你調用 從mmx sse 乃至後
來avx 你不做 他們就在某耗電規格或者反應時間卡你
讓你拿不到他們認證 除非他們有特殊目的才放行
Anonymous avatarAnonymous2020-09-30
vectorized columnar olap database
Joseph avatarJoseph2020-10-03
我現在比較想得到的是數值分析軟體,這個AVX的優點
就很大
Connor avatarConnor2020-10-08
拿Q8400跑跑win7以後OS 那種延遲感是非常顯而易見的
Ida avatarIda2020-10-09
用在"富岳",全世界最快的超級電腦,完全不用GPU
Thomas avatarThomas2020-10-11
好奇os拿來幹嘛
Skylar DavisLinda avatarSkylar DavisLinda2020-10-15
專業推
Agnes avatarAgnes2020-10-16
看不懂還是推
Ingrid avatarIngrid2020-10-17
借問一下,以前聽過3DNow!好像很屌,後來怎麼都沒聽
到了
Lucy avatarLucy2020-10-18
推 這篇講的比上一篇好太多了
Una avatarUna2020-10-19
我好像又多懂一點點了
Caitlin avatarCaitlin2020-10-23
有懶人包有推
Rosalind avatarRosalind2020-10-23
上面兩位問題本身關鍵字就有 wiki跟GOOGL得到答案
甚至有完整文件說明 怕陷入引戰 就這樣
Selena avatarSelena2020-10-26
Christine avatarChristine2020-10-31
3DNow!的3000+打的噴火龍3G吱吱叫
Elvira avatarElvira2020-11-01
那時候拿3000+配6600GT玩全民公敵正夯
Enid avatarEnid2020-11-06
太專業了 但我要去消化一下
Kelly avatarKelly2020-11-10
專業推一個,也順便幫我複習了一些指令集演進
Lily avatarLily2020-11-15
在用matlab的時候感覺很明顯啦,真十代icelake比起
同學的牙膏十代快多了
Bethany avatarBethany2020-11-16
專業推
Franklin avatarFranklin2020-11-19
上一篇比這篇好很多吧....這篇.....
Una avatarUna2020-11-20
上一篇講未來,這篇講古
John avatarJohn2020-11-24
其實都是很好的分享 不需要去分高下 人家願意分享就
不錯了
Eartha avatarEartha2020-11-27
嗯聽不懂
Anonymous avatarAnonymous2020-11-30
根本不是在講同一件事,哪有啥好比?
Steve avatarSteve2020-12-03
是說如果AVX512真的這麼好,編譯器要聰明到自動調用
用起來自然就會讓使用者有感,現在就是大多使用者無
Oscar avatarOscar2020-12-05
感,才會讓人質疑它的價值
Frederica avatarFrederica2020-12-05
AVX512被嫌棄的地方在於降速求控球會拖累其他人
Aaliyah avatarAaliyah2020-12-10
這篇問題很大阿 什麼每次都是為了擴充處理資料能力
是不是連AMD的指令集都不認識? 而且AES還是AMD強項
Charlie avatarCharlie2020-12-14
專業推
Mia avatarMia2020-12-16
3dnow都被sse幹掉了還在打噴火龍??
Vanessa avatarVanessa2020-12-19
k6-3內建3dnow跑3d遊戲還是被低階celeron打趴...
Jessica avatarJessica2020-12-20
買這些指令集的好處不就是有intel花錢去幫你弄compi
ler這髒活?不然要自己優化嗎?
Jake avatarJake2020-12-22
這篇很好 我在上篇留言想打的這裡都解釋的很清楚
Oliver avatarOliver2020-12-25
不知道哩,3000+跑全民公敵比噴火龍3G還要順
Andrew avatarAndrew2020-12-27
不過燒光碟還是乖乖拿有HT的噴火龍比較安全
Ivy avatarIvy2020-12-29
推這篇
Anonymous avatarAnonymous2020-12-30
AMD比較成功的指令集就x86-64而已
Ophelia avatarOphelia2021-01-03
其他都是跟著Intel走
Sandy avatarSandy2021-01-05
以前AMD也有想弄自己的SSE5 intel直接放話不會去支
Lauren avatarLauren2021-01-07
援AMD SSE5 弄自己的AVX最後也真的沒人理AMD的SSE5
Kama avatarKama2021-01-09
後來AMD處理器一樣要去相容intel AVX
Margaret avatarMargaret2021-01-10
上面說的AES也是intel提出的指令集
Faithe avatarFaithe2021-01-12
專業推
Zora avatarZora2021-01-17
市佔夠高就是任性
Linda avatarLinda2021-01-19
以前i皇市佔高沒人理A家,但再牙膏下去,可能以後也
換他沒人理…
Agatha avatarAgatha2021-01-20
AVX512是大客戶有需求intel才放進去的
Queena avatarQueena2021-01-21
專業推
Ingrid avatarIngrid2021-01-22
簡單來說追求通用計算的話就會繼續留著這堆電晶體
Edith avatarEdith2021-01-25
所以FMA是AMD這邊提出來的SIMD?
Caroline avatarCaroline2021-01-28
因該是說fma是從sse5拆出來的 而sse5是amd提出的
Faithe avatarFaithe2021-01-30
轉檔喔 現在的i被amd單純用核心按著摩擦
Hazel avatarHazel2021-02-03
Amd想推指令集大多不太成功因為基數太小
Jake avatarJake2021-02-06
都有推自己的MKL
Blanche avatarBlanche2021-02-08
AMD就是菜雞市場小 別人說什麼就聽話啊
Daniel avatarDaniel2021-02-09
尤其大量的運算上 AMD沒有吃下份額 出這種接近專
用指令集 別說硬體不見得跟得上 軟體都趴了先
Oscar avatarOscar2021-02-14
降速求控球 都如球球是好球也不錯
你可以想著種花聯盟來就還是一堆壞球
Margaret avatarMargaret2021-02-16
Maddux來你很快就早安午安晚安
Hedda avatarHedda2021-02-20
所以簡單說是一般人看不到整個市場的需求?所以無法
Tracy avatarTracy2021-02-24
了解intel的決策...如果一味追求通用就會變成GPU界
的AMD?
Bennie avatarBennie2021-02-25
AMD GPU的問題跟追求通用沒啥關係
NV CUDA本身就是往通用方向邁進的設計
Caitlin avatarCaitlin2021-02-27
這東西還是要算使用率的 對一般民眾日常來用
最常見的就是OS 轉檔 會用到
Victoria avatarVictoria2021-02-27
AMD菜到連聽話的機會都沒有吧 只能事後看人家的東
西乖乖做了
Skylar DavisLinda avatarSkylar DavisLinda2021-03-01
當初x86-64有機會成功,也是因為intel內部在路線之
爭的內鬥
Andy avatarAndy2021-03-05
而且早期板本 多開幾個 那速度根本對半
Elma avatarElma2021-03-05
不過CPU二十年前歷經一波多頭...大概一些common的部
份也做到差不多了...是時候去服務其他的20%這樣?
Caroline avatarCaroline2021-03-09
Intel當時決定押寶IA64 ,放棄了他們自己64位元方案
Zanna avatarZanna2021-03-12
理論上 在HPC應用上 會快60X
實際上HPC 上 我還真沒看過這麼高的
Skylar DavisLinda avatarSkylar DavisLinda2021-03-17
其實這件事情就是最大謬誤阿 人家又不是做一堆ASIC
原本的就沒優化 到底為啥以為都只能做一件事情 人
家人多的是
Ula avatarUla2021-03-18
我覺得Intel比較大的麻煩是他們的AVX比AMD熱很多XD
Skylar DavisLinda avatarSkylar DavisLinda2021-03-23
我自己算是常常使用數值分析軟體的人,樂見AVX進展
Megan avatarMegan2021-03-28
大家都想搶HPC市場啦
Odelette avatarOdelette2021-03-30
只是牙膏王爽太久 架構發現不太行的時間比AMD晚
設計完的新產品本來就好幾年 又遇到製程大烙塞才看
起來好像只能吹這些舊世代最後的feature
Dinah avatarDinah2021-04-02
我的工作算有點廣 做點 cpu 設計 做點底層 做數值
Edward Lewis avatarEdward Lewis2021-04-03
我是很想幫AMD吹AVX,但一般人用到的還真的沒那麼多
Queena avatarQueena2021-04-05
分析的軟體 偶爾跑 hpc
自己結論就是 專業是事還是batch交給專業單元
Zora avatarZora2021-04-06
新架構的東西也不是都沒產品 只是烙塞到還沒辦法大
量商業化而已
David avatarDavid2021-04-11
只是AVX目前的應用都還算滿穩的
一般軟體裡面使用GPU加速的機能都滿鳥的
Charlotte avatarCharlotte2021-04-14
現在的GPU就能做到雙精度了 (雖然目前最大宗的是 16
Gilbert avatarGilbert2021-04-16
其實512的不太穩 .... 他造成了蠻多其他單元的問題
要轉yter 你買台 ipad pro比較快....
Yedda avatarYedda2021-04-17
現在這麼多YTer...這類指令集在工作處理上有幫助吧?
Queena avatarQueena2021-04-18
@protoss 這就要看GPU轉檔現在怎樣了
Xanthe avatarXanthe2021-04-23
不過剪輯應該還是會吃到AVX
至少我看Adobe Cloud那些應用,AVX仍有很大幫助
Hardy avatarHardy2021-04-27
我以為剪輯預覽會吃到GPU...匯出則CPU/GPU都可以選?
Zora avatarZora2021-05-02
真要我說的話...我當下看到Linus狂噴AVX挺意外的
Jacky avatarJacky2021-05-05
我說 ipad pro 比較CP值高 逗逼就不說了 那個雲
Olivia avatarOlivia2021-05-08
GPU雙精度要錢要電晶體啊 老黃精美的運算卡價格hen
刺激
Emily avatarEmily2021-05-09
我不是很清楚他到底是那裡被陰到了
Edward Lewis avatarEdward Lewis2021-05-09
不過我自己被陰過 至今還無法解 (應該)
Audriana avatarAudriana2021-05-11
就不喜歡特規吧 而且可能linux kernal沒那麼大需求
ms玩比較多怪招吧
Emily avatarEmily2021-05-16
老黃那個是單精搞雙精吧 (如果我沒有記錯 )
Mason avatarMason2021-05-18
老黃最厲害的是對市場反應快 很會recycle
Hamiltion avatarHamiltion2021-05-20
運算卡好像真的有花錢砸fp32吧 所以也反應在成本上
了 價差這麼大
Audriana avatarAudriana2021-05-22
fp32單精啊~~ 他現在本來就單精
然後往上往下 再做變化啊~
Aaliyah avatarAaliyah2021-05-27
64才對
Faithe avatarFaithe2021-05-30
純64的我到是不知道 最近沒去看他們的 arch了
Candice avatarCandice2021-06-01
不過老黃現在滿腦子AI 雙精度根本賺不到錢 誰管你
現在是tf32的時代了
Frederica avatarFrederica2021-06-05
答對哦~~~~AI好撈啊 看看那個精美的DGX A100
好香
Steve avatarSteve2021-06-06
不過tf32真的蠻有創意的 真的AI魔人耶
Olive avatarOlive2021-06-07
還可以啦 等那天不用GD他就可以收攤了啊
Isla avatarIsla2021-06-10
老黃現在除了硬體以外 軟體社群也深耕的夠好就是
要抽離也是很痛 其實蠻類似牙膏王在做的事情
Barb Cronin avatarBarb Cronin2021-06-12
老黃九命怪貓 他只要還在NV就是厲害
不過他肯定會被三星坑 (聰明反被聰明誤)
Adele avatarAdele2021-06-14
XDXD 各位等著看 XD
Mason avatarMason2021-06-16
人家真正重中之重還是乖乖跪舔GG啊 A100那種怪物
三星在過個十年可能都做不出來(?
Lily avatarLily2021-06-17
linus不爽的只有AVX512,超吃晶片面積一般用戶卻幾
乎用不到
Robert avatarRobert2021-06-21
AVX指令集還是有必要,高性能處理器和指令集也脫不
了關係
Joseph avatarJoseph2021-06-25
真正讓它賭爛是AVX512太耗電會降頻
Anonymous avatarAnonymous2021-06-28
為了1種指令能高性能,其他全部低性能
導致不見得比較快
Kyle avatarKyle2021-06-30
降頻降不小外 還有另外啟動時間 算下去cost不低
AVX反到是還好 綜合性下去性能有提升
Linda avatarLinda2021-07-01
之前其實有蠻多文章講到底會降多少 點個十顆左右
頻率剩下一半 = ="
Tracy avatarTracy2021-07-06
他又沒反對 AVX2...是反對 AVX512, 覺得賺的不夠賠
Xanthe avatarXanthe2021-07-08
Franklin avatarFranklin2021-07-10
雖然看不太懂但專業推
Ivy avatarIvy2021-07-11
什麼是你沒用它是有點錯誤
Mia avatarMia2021-07-15
因為它有降頻問題,你軟體除非跑分
否則不可能永遠一直跑AVX512
其實指令因為降頻全部變慢了
Suhail Hany avatarSuhail Hany2021-07-19
其他指令
所以你可能努力用它結果賠的比賺得多
Zanna avatarZanna2021-07-24
GPU砍FP64主要還是商業考量
而且從老黃maxwell以後一去不回頭
Ethan avatarEthan2021-07-28
然後牙膏又差不多獨佔x86很多年 即使現在也是寡佔
大家應該是看不太到擺脫這些東西的一天
Catherine avatarCatherine2021-07-31
五年前說GPU交換資料太慢我可能信
Agnes avatarAgnes2021-08-05
現在2020 pcie gen4 要DDR4 4000才餵的飽
Bennie avatarBennie2021-08-06
AVX512就是雞肋~食之無味棄之可惜
Elizabeth avatarElizabeth2021-08-09
而且你拿一顆40幾萬的CPU比2080會不會太看得起老黃
Elvira avatarElvira2021-08-13
V100 一張30萬 DP 是7TFLOPS 足足是8280三倍有找