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