admin管理员组

文章数量:1627760

LLVM创始人Chris Lattner回顾展望编译器
LLVM 命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写,由于命名带来的混乱,LLVM就是该项目的全称。LLVM 核心库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译器优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技术的集合。LLVM是伊利诺伊大学的一个研究项目,提供一个现代化的,基于SSA的编译策略能够同时支持静态和动态的任意编程语言的编译目标。自那时以来,已经成长为LLVM的主干项目,由不同的子项目组成,其中许多正在生产中使用的各种 商业和开源的项目,以及被广泛用于学术研究。
LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。
LLVM计划启动于2000年,最初由美国UIUC大学的Chris Lattner博士主持开展。2006年Chris Lattner加盟Apple Inc.并致力于LLVM在Apple开发体系中的应用。Apple也是LLVM计划的主要资助者。
LLVM已经被Apple、Microsoft、Google、Facebook等各大公司采用。
摩尔定律失效论的讨论与日俱增,2018年,图灵奖获得者 John Hennessey 和 David Patterson 在一次演讲上更是直言,几十年来的 RISC(精简指令集)和 CISC(复杂指令集)孰优孰劣之争可以终结了,新一轮计算机架构的黄金时代已经到来,为此,在2019年的 ACM 期刊上发表了一篇文章里作专门论述。

为了打破当前架构发展的桎梏,给出的答案是,需要软硬件协同设计和创新,构建领域专用架构、领域专用语言,构建更专业化的硬件,并提升运行速度。

参考视频链接:
https://www.youtube/watch?v=4HgShra-KnY
参考文献链接(作者|Chris Lattner翻译|胡燕君、周亚坤)
https://mp.weixin.qq/s/dRarW4iKtjBE5Ym_P0xUQw
https://baike.baidu/item/LLVM/3598690?fr=aladdin

作为驱动计算机架构革新的重要组成部分,编译器也在迎来黄金时代。就在2021年4月19日的ASPLOS会议上,编译器大牛Chris Lattner在主题演讲中分享了关于编译器的发展现状和未来、编程语言、加速器和摩尔定律失效论,并且讨论业内人士如何去协同创新,推动行业发展,实现处理器运行速度的大幅提升。OneFlow社区对演讲内容做了不改变原意的编译,希望能对AI/编译器社区有所启发。 Chris Lattner 毕业于波特兰大学的计算机科学系,具有创建和领导多个知名大型项目的经验,其中包括 LLVM、Clang、MLIR和CIRCT等编译器基础设施项目,还带头创建了Swift编程语言。 从2005年7月到2017年1月间,曾领导苹果的开发者工具部门,随后,曾短暂领导过特斯拉的自动驾驶团队。2017年8月,Chris Lattner 在Google Brain团队领导了TensorFlow基础设施工作,包括一系列硬件支持(CPU、GPU、TPU),底层运行时和编程语言工作。 2020 年 1 月到 2022 年 1 月,Chris Lattner 在 SiFive 公司领导工程和产品团队(包括硬件、软件和平台工程),SiFive 基于开源指令集 RISC-V,向芯片设计公司提供 IP。2021年 6 月,SiFive 收到了英特尔的收购意向,后者提出以超过 20 亿美元的价格收购这家公司。2022 年 1 月,Chris Lattner 和 Tim Davis 共同成立了 Modular AI,本人担任CEO,目标是重建全球 ML 基础设施。
以下是Chris Lattner的演讲内容。
1
为什么需要下一代编译器和编程语言
尽管硬件正在蓬勃发展,新加速器和新技术不断涌现,但软件业却很难真正利用。 为什么会这样?在加速器的世界里,比如AI和结构化计算技术发展领域,出现了标量加速和向量加速等多种层面的加速,就像CPU领域也分为标量处理器和向量处理器一样,当然现在还有多核CPU。这样一来就会出现多种硬件组合,不同的硬件安装在同一个数据中心,这些硬件就必须相互通信。 但是,很多时候却没有一致性的内存,导致写一个C语言程序运行所有东西是不可行的,这样的组合运行有点像超级计算机使用多个CPU一样。
同时,世界正在越来越异质化,出现了各种各样的应用。机器学习快速发展,但机器学习涉及很多技术,如果不止研究训练和推理,还想研究强化学习,那就要了解不同的加速器。如果想研究强化学习,就要整合主机计算和加速器计算,让协同工作。现在制造的很多新设备里的IP和硬件块都是可配置的,即便是随存储器层次深度改变缓存大小这么简单的事,都会影响这些设备运行所依赖的内核。 所以,尽管现在硬件越来越多样,硬件生态迅速壮大,但软件还是很难充分利用来提高性能。而且如果软硬件协同不到位,性能就会受到巨大影响,那不止是10%左右的浮动,比如,如果弄错了内存层次结构,性能很可能会发生断崖式下跌,变成正常水平的十分之一。 当今,加速器领域发生爆炸式增长,几乎每天都会有新公司制造新的加速器。但问题是,怎么用这个加速器?更关键的是,有人想做新应用,但想在软件代码库上下工夫,于是不停地推进和完善软件代码库。 无法直接在这个新设备上使用旧的软件堆栈,某个部件可能换了供应商,做了流程精简,导致所需的技术堆栈不一样。因此,不得不给每个新的小型设备都写一个全新的软件堆栈。这样做又导致了软件的碎片化,这种碎片化的发展带来了巨大成本,也会反噬硬件行业,因为硬件用不了了。 需要下一代编译器和编程语言来帮助解决这种碎片化。首先,计算机行业需要更好的硬件抽象,硬件抽象是允许软件创新的方式,不需要让每种不同设备变得过于专用化。 其次,需要支持异构计算,因为要在一个混合计算矩阵里做矩阵乘法、解码JPEG、非结构化计算等等。然后,还需要适用专门领域的语言,以及普通人也可以用的编程模型。 最后,也需要具备高质量、高可靠性和高延展性的架构。很喜欢编译器,很多人根据编译器在做应用,也很尊重这一点。可以说,在开发下一代神经网络不仅仅只想做编译器。大家可以合作,这样一来就意味着需要可用的环境和可用的工具。 令人兴奋的是,编译器或者编程语言工程师会迎来一个崭新的时代:过去和现在都有无数的技术诞生,这些技术正在改变世界,有幸参与这场变革浪潮非常令人激动。 接下来,会谈谈编译器行业的早期发展,以及带给经验和对未来的启发。
2
传统编译器的设计和挑战
当还是学生时,编译器是单独装盒的,安装在一个软盘上,每次使用都要把软盘插进电脑里。
当时的行业状况是,不同的供应商做出不同的处理器、操作系统,都想要通过创新脱颖而出,抓住编译器的价值。这些编译器都是专用的,互不兼容,不会共享代码。所以会看到Borland C编译器和Microsoft C编译器互相竞争,最终造成碎片化生态。这就阻碍了行业发展,但人们还没有意识到这一点。

本文标签: 编译器创始人LLVMLattnerChris