![92dc7e67272c554ae16f5b70b643ad77.png](https://i-blog.csdnimg.cn/blog_migrate/1335877928eb0d8ac73232cb6006dc31.jpeg)
「去死吧,AVX 512 指令集。」Linux 提出者林纳斯 · 托瓦兹(Linus Torvalds)说道。
机器之心报道,参与:泽南。
Linux 首席架构师,当今全球最著名程序员之一 Linus Torvalds 最近在邮件列表中的言论再次引起一片哗然。
![6f25fa64e8b3c148141f97da0c4b238d.png](https://i-blog.csdnimg.cn/blog_migrate/f08e2924a7654a8f947085ac09247e4c.jpeg)
在上周被披露的邮件列表中,有关英特尔将为下一代 CPU 架构 Alder Lake(和 Sapphire Rapids)启用的编译器指令引发了讨论,Linus Torvalds 参与其中。
英特尔的下一代处理器架构 Alder Lake x86 平台或将于 2021 年与人们见面,与突出性能的 AMD 相比,英特尔希望通过和目前手机芯片理念类似的「大小核设计」带来能效上的大幅改进。文档披露了三种 CPU 设计,其中最高的是 125W 的 8 + 8 + 1 配置(8 大核 + 8 低功耗核心 + 核显),其次是 80W 的 8 + 8 + 1 配置,此外有一个 80W 的无小核配置(6 + 0 + 1)。
此前有消息说 Alder Lake 将不支持 AVX512 指令集,只有 AVX2 和其他版本,这可能是因为英特尔在新设计中需要考虑小核的承载能力。不过最近英特尔的内部文件显示,AVX512 等指令将仅限在大核中运行。
![233fa01f20d85f1b6d063b2786192f6e.png](https://i-blog.csdnimg.cn/blog_migrate/70ebaa9b91032706b20c0dcf2a6b87d8.jpeg)
有关 AVX512 指令集,Linus 发表了这样的一段言论:
我希望 AVX512 去死,然后英特尔就可以开始去解决实际问题了——而不是试图去创造神奇的指令,然后围绕它寻找基准测试结果让它看起来很好。
我希望英特尔能够回归本源:让他们的进程再次发挥作用,更专注于常规代码,而不是 HPC(高性能计算)或其他意义不大的特例。
在那个时候,除了基准测试,几乎没有人会关心这个问题。
但同样的事发生在 AVX512 上就变得不同了。是的,你可以在这里找到有用的东西,但它们并不符合厂商绘制的宏伟蓝图。
AVX512 有很明显的缺点。我宁愿看到那些晶体管被用于其他更相关的事情。即使同样是用于进行浮点数学运算(通过 GPU 来做,而不是通过 AVX512 在 CPU 上),或者直接给我更多的核心(有着更多单线程性能,而且没有 AVX512 这样的垃圾),就像 AMD 所做的一样。
我希望通过常规的整数代码来达到自己能力的极限,而不是通过 AVX512 这样的功率病毒来达到最高频率(因为人们最终还是会拿它来做 memory-to-memory copy),还占据了核心的很大面积。
没错,我当然有偏见。我非常讨厌浮点数基准测试,而且我意识到现在人们都非常关心这个数据。我只是认为 AVX512 是一个彻头彻尾的错误。这东西让我如鲠在喉。这是英特尔方向搞错的一个很好的例子,可能只会让市场碎片化。
停止这种只适用于特例的垃圾,让所有核心都能实现人们最关心任务的最大性能,然后制造一个足够好的「浮点数核心」来解决特殊问题才是最好的。(在 CPU 上)AVX2 已经足够了。
是的,我就是这么暴躁。
——Linus
Linus 为什么突然对 AVX512 一顿吐槽?一切还得从指令集的作用开始说起。
在计算机中,程序需要编译成指令才能让 CPU 识别并执行运算,指令集是指 CPU 能执行的所有指令的集合,每个指令对应一种操作。指令执行能力是衡量 CPU 性能的重要指标,指令集也与 CPU 效率有密切关系。每种 CPU 都需要一个基本指令集,如英特尔和 AMD 的绝大部分处理器都使用 X86 指令集。
为了提高 CPU 在某些方面的性能,我们必须增加一些特殊的指令满足需求,这些新增的指令就构成了扩展指令集。2008 年,英特尔在 Sandy Bridge 酷睿 CPU 架构推出的同时发布了 AVX 指令集(Advanced Vector Extension,高级矢量扩展指令集),聚焦矢量运算,AVX 很快形成了一套完整的单指令多数据指令集规范,一些版本也得到了 AMD 的支持。
2013 年,英特尔发布了 AVX-512 指令集,其指令宽度扩展为 512bit,每个时钟周期内可打包 32 次双精度或 64 次单精度浮点运算,因此在图像 / 音视频处理、数据分析、科学计算、数据加密和压缩和深度学习等应用场景中,会带来更强大的性能表现,理论上浮点性能翻倍,整数计算则增加约 33% 的性能。
![e2d6d7fa66397eaf71e0ec66871d0f21.png](https://i-blog.csdnimg.cn/blog_migrate/d85fa3e2cd6d199330b995f682adec2a.jpeg)
AVX 所代表的单指令多数据(Single Instruction Multi Data,SIMD)指令集,是近年来 CPU 提升 IPC(每时钟周期指令数)上为数不多的重要革新。随着每次数据宽度的提升,CPU 的性能都会大幅提升,但同时晶体管数量和能耗也会有相应的提升。因此在对功耗有较高要求的场景,如笔记本电脑或服务器中,CPU 运行 AVX 应用时需要降低频率从而降低功耗。
随着人工智能应用的兴起,新的 AVX512 指令对于加速 AI 模型的推断显得非常有效,但即使是对于 AI 的推断过程来说,使用 GPU 效率还是比 CPU 高的,不过 GPU 的成本也很高。所以,在技术的发展过程中,消费者和英特尔这样的处理器生产厂商同样面临着道路的选择:是发展 CPU 的 AI 计算能力,还是寻求其他专用芯片,让 CPU 做它「该做」的事?
我们知道,程序员大神 Linus 一生喷人无数,C++、Java、英伟达都没少被他指责过。不过这次,Linus Torvalds 的言论得到了不少人的支持。
「其实这次,Linus 说得对,Intel 当然也知道他说得对,但明知他说得对,(暂时)只能硬着头皮搞下去。」在知乎上,@Pansz 这样评价道。
不仅是说说就算了,Linus 还有自己的实践。早在今年 5 月,Linus 就在一次公开活动中表示自己已改变了十五年来的习惯,转投 AMD 了,他把自己的个人电脑换成了目前的最高配置,32 核心的 Threadripper 3970x。在一些第三方测试中,这款采用 7 纳米制程的 CPU 性能超过了英特尔本世代旗舰产品 Core i9 10980XE。
![b6fba457d742fe25ff42e5850fb4c5cc.png](https://i-blog.csdnimg.cn/blog_migrate/ec935e50de65e7805403dd0f721b164d.jpeg)
Linus 表示自己用 AMD 芯片替换了原来的英特尔 Core i9 9900K,不得不说这个换装速度有点勤快。「我通常会 DIY 自己的机器,继续用上一台配置的固态硬盘等组件,不过这一次(因为要换主板)我使用了全新的配置,」Linus 说道。
不知几年之后,是 AMD 宣布支持 AVX512,还是英特尔放弃这套指令集?
参考内容:https://www.phoronix.com/scan.php?page=news_item&px=Linus-Torvalds-On-AVX-512
https://www.zhihu.com/question/406517759