Linus Torvalds向AVX-512开炮:“我希望它死的痛快点”
为了提高处理器的浮点运算性能,Intel不断拓宽处理器的后端执行单元,从128-bit进化到了今天的512-bit,同时引入新的指令集来让程序利用好硬件特性,但这也对开发者造成了相当的不便。近日Linux的缔造者Linus Torvalds就向Intel的AVX-512开炮了:
我希望AVX512死的痛快点,这样Intel就能面对现实的问题,而不是通过创造魔法指令集让他们在基准测试中看上去很厉害。
我希望Intel回归基础:让他们的流程重新转起来,更关注常规的代码,而不是HPC或是其他什么没有意义的特殊情况。
我以前已经说过了,我现在再说一次:在x86的全盛时期,当Intel一路笑到银行,并杀死他们所有的竞争对手的时候,其他所有人在浮点负载上都绝对要比Intel做的好。Intel的浮点性能很差劲(相对而言),它也并不重要。
因为绝对没有人会在乎基准测试之外的东西。
AVX512现在——以及未来也大体如此。是的,你可以找到你需要的东西。但那些东西对卖机器的大局来说没有用。
另外AVX512有真正的缺点。我宁愿看到晶体管预算被用在其他更为相关的东西上。就算仍然是浮点性能(用在GPU上都比AVX512强)。或者就像AMD那样给我更多的核心(有良好的单线程性能,但没有AVX512这样的垃圾)。
我希望常规的整数代码能够利用完我的功耗限制,而不是什么夺走最高频率的AVX512功耗病毒(因为人们最后总是用它来做memcpy!),还夺走了核心数量(因为那些无用的垃圾单元占据了空间)。
是的,是的,我带有偏见。我绝对讨厌浮点的基准测试,我也知道其他人对此很关注。我只是觉得AVX512是绝对错误的东西。它是让我特别讨厌的东西。这是一个典型的用来说明Intel做错了的例子,部分原因来自于Intel增加了市场的碎片化。
停止使用特殊情况的垃圾,让所有人都关注的那些核心的共同东西尽其所能地运行。然后在旁边做一个基本够用的FPU,人们就很开心了。AVX2已经够用了。
是的,我脾气暴躁。
Linus
Intel在Skylake-Server架构中首次引入了AVX-512特性,但它并没有像之前引入AVX和AVX2那样顺利,因为在使用过程中,用户发现在AVX-512负载下,核心频率会有较大幅度的下降,让性能不升反降,Cloudflare的运维人员在两年前就已经对此做过详细的分析了。
图片来自于DeviantArt,有修改
正如Linus所说的,这些“魔法指令集”也让x86 CPU变得更为碎片化,程序优化变得越来越困难。而AVX-512在不少场景中是为了AI相关的应用所服务的,对传统应用的作用较小,Linus说的“AVX2够用”确实是目前的情况,更多的浮点运算交给对这方面更拿手的GPU去做才是正确的选择。