LLVM之父:现在是编译器最好的时代
编译器作为推动计算机架构创新的重要组成部分,也迎来了它的黄金时代。在去年4月19日的ASPLOS会议上,编译大牛ChrisLattner在主题演讲中分享了编译器的发展现状和未来、编程语言、加速器和摩尔定律故障理论,并讨论了行业如何协同创新,促进行业发展,大大提高了处理器的运行速度。
LLVM之父:现在是编译器最好的时代
毕业于波特兰大学计算机科学系于波特兰大学计算机科学系,在创建和领导许多知名大型项目方面有经验,包括LLVM、Clang、MLIR、CIRCT等编译器基础设施项目。他还率先创建了Swift编程语言。
从2005年7月到2017年1月,他领导了苹果的开发者工具部门,随后又短暂领导了特斯拉的自动驾驶团队。2017年8月,克里斯Lattner在谷歌Brain团队领导了tensorflow基础设施工作,包括一系列硬件支持(CPU、GPU、TPU)、底层操作和编程语言工作。
2020年1月至2022年1月,Chrislatner在SiFive公司领导工程和产品团队(包括硬件、软件和平台工程),SiFive基于开源指令集RISC-V,为芯片设计公司提供IP。去年6月,SiFive收到了英特尔的收购意向,后者提议以超过20亿美元的价格收购该公司。2022年1月,Chrislatner和Timdavis共同成立了Modulararai,目标是重建全球ML基础设施。
以下是ChrisLattner的演讲内容。
为什么需要下一代编译器和编程语言。
尽管硬件正在蓬勃发展,新加速器和新技术不断涌现,但软件行业很难真正使用它们。
为什么会这样?在加速器的世界里,如人工智能和结构化计算技术的开发领域,出现了标准量加速和向量加速,就像CPU领域也分为标准量处理器和向量处理器一样,当然,现在有多核CPU。这样,就会有各种硬件组合,不同的硬件安装在同一个数据中心,这些硬件必须相互通信。
然而,大多数时候,没有一致的内存,导致写一个C语言程序来运行一切都是不可行的。这种组合操作有点像超级计算机使用多个CPU。
与此同时,世界正变得越来越异质化,并出现了各种各样的应用程序。机器学习发展迅速,但机器学习涉及到许多技术。如果你不仅学习训练和推理,而且想学习强化学习,你需要了解不同的加速器。如果你想学习强化学习,你需要整合主机计算和加速器计算,让它们一起工作。许多新设备中的IP和硬件块现在都可以配置,即使缓存大小如此简单,也会影响这些设备运行所依赖的核心。
因此,虽然硬件越来越多样化,硬件生态发展迅速,但软件仍难以充分利用它们来提高性能。而且,如果软硬件协同不到位,性能会受到很大影响,这不仅是10%左右的浮动。例如,如果内存水平结构错误,性能很可能会像悬崖一样下降,成为正常水平的十分之一。
如今,加速器领域发生了爆炸性增长,几乎每天都有新公司制造新的加速器。但问题是,如何使用这个加速器?更重要的是,有些人想做一个新的应用程序,但他们想在软件代码库上下功夫,所以他们不断地推广和改进软件代码库。
你不能直接在这个新设备上使用旧的软件堆栈,它们的某个部件可能会改变供应商,简化过程,导致不同的技术堆栈。因此,你必须为每个新的小型设备写一个新的软件堆栈。这导致了软件的碎片化,这种碎片化的发展带来了巨大的成本,但也会击硬件行业,因为硬件不能使用。
我的观点是,我们需要下一代编译器和编程语言来帮助解决这种碎片化问题。首先,计算机行业需要更好的硬件抽象。硬件抽象是一种允许软件创新的方式,不需要使每个不同的设备过于专用。
其次,我们需要支持异构计算,因为我们需要在混合计算矩阵中做矩阵乘法、解码JPEG、非结构化计算等。然后,需要适用于特殊领域的语言,以及普通人也可以使用的编程模型。
最后,我们还需要一个高质量、高可靠性和高延展性的架构。我非常喜欢编译器,很多人都在根据编译器进行应用程序,我也非常尊重它。可以说,他们正在开发下一代神经网络,而不仅仅是编译器。我们可以合作,这意味着他们需要可用的环境和工具。
令人兴奋的是,编译器或编程语言工程师将迎来一个新的时代:过去和现在都有无数的技术诞生,这些技术正在改变世界,参与这一变化浪潮是非常令人兴奋的。