vector instrunctions
vector instrunctions 單位時間內比較耗電,產生較多熱量
Intel CPU workaround是把使用到的core降頻,減少熱量產生
是否會因為過熱降頻反而減少效能,需要實測才知道
AVX512的部分可以參考
https://lemire.me/blog/2018/09/07/avx-512-when-and-how-to-use-these-new-instructions/
目前似乎不太推薦使用AVX512
AVX2也有類似的情況
舊型CPU降比較多,新的才會降比較少
AMD沒有這個問題,至少我的R5是這樣
因為Zen是用兩個cycle 128bit來做AVX2 (256bit),產生的熱沒那麼多
也許有降頻,沒有降到Intel那樣
還有一個問題,混用SSE2和AVX指令下會降低效能 (比只用SSE2還慢)
原因是CPU的狀態必須重置,會花費更多時間 (詳細的說明請自己去google)
不是說不能用SSE2指令,必須用AVX版本的SSE2指令 (叫做AVX-128?)
compile成SSE2的和AVX的link起來,就無法避免這種情況發生
用設定強制支援AVX的用SSE2跑,或是重新compile成同樣版本指令集
https://software.intel.com/en-us/articles/avoiding-avx-sse-transition-penalties
看起來應該是同一個thread的程式內混用才有影響
Intel CPU workaround是把使用到的core降頻,減少熱量產生
是否會因為過熱降頻反而減少效能,需要實測才知道
AVX512的部分可以參考
https://lemire.me/blog/2018/09/07/avx-512-when-and-how-to-use-these-new-instructions/
目前似乎不太推薦使用AVX512
AVX2也有類似的情況
舊型CPU降比較多,新的才會降比較少
AMD沒有這個問題,至少我的R5是這樣
因為Zen是用兩個cycle 128bit來做AVX2 (256bit),產生的熱沒那麼多
也許有降頻,沒有降到Intel那樣
還有一個問題,混用SSE2和AVX指令下會降低效能 (比只用SSE2還慢)
原因是CPU的狀態必須重置,會花費更多時間 (詳細的說明請自己去google)
不是說不能用SSE2指令,必須用AVX版本的SSE2指令 (叫做AVX-128?)
compile成SSE2的和AVX的link起來,就無法避免這種情況發生
用設定強制支援AVX的用SSE2跑,或是重新compile成同樣版本指令集
https://software.intel.com/en-us/articles/avoiding-avx-sse-transition-penalties
看起來應該是同一個thread的程式內混用才有影響
留言
張貼留言