avx-sse切换惩罚
avx指令和早期sse指令混合时,会存在转换开销,因为avx 256比较宽,sse指令128位,avx执行后再执行早期sse时,会把高128位保存,执行完sse再执行avx时,再把高128位恢复。
编译时指定-mavx,就会使用vex编码的sse指令(新版sse),这样就不存在切换开销了。
使用avx512时,在编译指令中加上-mavx12bw 使用sse时,加上-msse2 -mfma 或者-msse4.2
参考intel官方手册: https://www.intel.com/content/dam/develop/external/us/en/documents/11mc12-avoiding-2bavx-sse-2btransition-2bpenalties-2brh-2bfinal-809104.pdf
编辑 (opens new window)
上次更新: 2023/05/07, 17:27:54