- 主题:计算机科不科班出身,就看一门课就够了:编译器原理
懂了编译器原理,不管学术还是码农,以后纵横天下无敌。
@mizhahu @G1001 @changi
--
FROM 223.104.68.*
再辅助操作系统内核课,更是如虎添翼。
【 在 angusta 的大作中提到: 】
: 懂了编译器原理,不管学术还是码农,以后纵横天下无敌。
: @mizhahu @G1001 @changi
:
--
FROM 223.104.68.*
太虚,不如编译器实用。
【 在 zc27 的大作中提到: 】
: 不是SICP吗?
:
--
FROM 183.17.233.*
把gcc,llvm搞熟,年薪70万起。
@mizhahu @G1001 @changi
tom和曙光搞不定编译器,操作系统,虚拟机吧。
【 在 ohiostate 的大作中提到: 】
: 我这们课程倒是真学过,但是还是业余啊
--
修改:angusta FROM 223.104.68.*
FROM 223.104.68.*
哈哈哈,70万是国内二流学校编译器应届硕士毕业的价格。读个博士,去个大厂,工作三五年之后,都能百万,10年资深就近千万了。
Tom和曙光是斯坦福教授准院士级别了,熬了几十年,快六七十岁了。
。
【 在 huakai 的大作中提到: 】
: tom和曙光都是年薪300w+的,为啥要搞定编译器去拿70w+
--
FROM 223.104.77.*
所以我说编译器是真正的看家课。
那些灌水的 @mizhahu 压根懂不了编译器,玩不转的。
【 在 tianiu 的大作中提到: 】
: 为啥编译方面的论文很少?
:
--
FROM 61.145.151.*
现在大厂都在搞编译器,基础架构。
gcc是码农常用。
程序编译,优化,也是日常操作。
【 在 kod2009 的大作中提到: 】
: 编译,很重要。懂的人少。就业市场小。
: 绝大部分码农都没学明白编译原理甚至没接触过。
--
FROM 223.104.77.*
大呀,现在华为这么多新的芯片,操作系统,手机,新编程语言,云计算,都要编译器不断开发支持。
【 在 kant2000 的大作中提到: 】
: 编译技术进展大吗?
: 还是学术热点吗?是不是现在就是优化?
: 还是基本没变化?
: ...................
--
FROM 223.104.77.*
有需求肯定有创新呀。
华为花了几千万跟一个青椒买一个编译器优化算法。
@mizhahu @G1001 @changi
【 在 kant2000 的大作中提到: 】
: 这些是编译的应用。
: 编译技术本身呢?
:
: ...................
--
FROM 223.104.77.*
来自郑州数学工程与先进计算国家重点实验室的赵捷老师与华为MindSpore团队合作,凭借着在基础数学上的能力,解决了一个AI芯片优化的重要问题,获得了顶级学术会议MICRO 2020的最佳论文提名,MICRO是计算机体系结构领域的国际顶级会议,这也是中国团队53年第3次入围该大会的最佳论文提名。
这篇论文主要研究了如何优化在AI芯片上的程序编译,尽可能的“榨干”AI芯片的性能,不仅支持对华为自研的昇腾910芯片,也支持现在主流的NVIDIA A100/V100 GPU,今后还会支持更多硬件。
在CPU上,其方法相较PolyMage和Halide分别平均性能提升了20%和33%。在GPU上,其方法比Halide提供了17%的平均性能改进。在AI芯片华为昇腾910上,该论文提出的方法可将ResNet-50模型整个执行时间提升16%。
华为不仅发表了论文,同时快速推进这项研究的落地。基于Polyhedral模型的算子自动生成技术MindAKG现已集成到AI框架MindSpore中。
MindAKG的作用就是对深度神经网络中的算子进行优化,利用Polyhedral模型来解决AI应用在不同芯片架构中的性能自动优化难题。
Polyhedral模型则是MindAKG的数学核心。
目前所有MindAKG的源代码早已在Gitee上开源代码,可谓所见即所得的典范。论文合作者赵捷老师目前也是MindSpore社区SIG-AKG的核心成员。业界少见的坚定开源开发如此大规模复杂技术,拥有如此开源雄心的MindSpore无疑将极大的考验其他开源AI框架的“硬核程度”。
基于Polyhedral的编译技术
Polyhedral编译技术历史悠久,最早可追溯到大型机时代研究程序自动并行问题开始。两位图灵奖得主Richard Karp、Leslie Lamport先后为此提出相关理论。
Polyhedral模型需要在编译器中构建一个非常好的数学模型来计算调度。
这种数学模型底层是通过解决整数线性规划问题来得到最优解的,但整数线性规划问题的求解过程是一个NP完全问题,因此只能通过一些近似方法求解。
如果这种数学模型的调度不够好,那么可能还不如手工编写调度性能。
如何构建Polyhedral模型的整数线性规划问题,使其能够达到手工编写调度性能相当的结果,是当前研究的核心难点。
既然是NP完全问题,如何降低Polyhedral模型求解的复杂度,也是当前需要解决的问题。
Polyhedral模型涉及大量的基础数学理论,包括但不限于线性代数、空间几何、最优化理论和矩阵论,以及基础计算机理论科学的知识如图论、数理逻辑等,这些知识点本身并不复杂,但是将这些知识点统一地表示在一个模型里,导致该模型的比较复杂,难以理解,入门的“门槛”比较高。
当前国内从事Polyhedral模型研究的人员较少,但在国外,多家科技厂商对该技术的研究十分重视,Google、Facebook、NVIDIA这几家AI领军企业都在研究利用Polyhedral模型来实现算子层的循环优化。
华为MindSpore团队也集结了Polyhedral领域的顶尖专家,全力攻关新的调度算法。
华为自研AI框架MindSpore利用Polyhedral模型,实现了昇腾系列芯片的算子自动生成器MindAKG,采用了可定制化的求解算法,保证程序性能的同时,有效缓解了编译时长的问题。
MindSpore的应用创新
这篇新论文的研究重点是利用Polyhedral模型来解决算子自动生成的问题,与Halide和TVM采用的”compute+schedule”的方式不同。本文研究的算子自动化技术,无需手动编写算子调度算法。
在此基础上,这项研究有以下关键创新点:
首先,这项工作自动化地实现了一种循环分块和合并的新组合。这种组合在已有的基于Polyhedral的自动编译过程中没有被考虑到,因为现有的Polyhedral编译流程限定了这两种循环变换的组合顺序。
同时,这种组合在已有的基于手工编写调度的编译工作中也很难实现,因为在复杂场景下,底层计算和数据之间的映射关系很难用手工编写的方式指定,所以基于手工编写调度的方式很难深入和系统地构建这种组合。
其次,该研究工作在提升程序性能的同时,又有效地缓解了现有Polyhedral编译技术的时间复杂度问题。
通常性能的提升和时间复杂度的降低是矛盾的,但这项研究由于避开了使用前面提到的整数线性规划问题来求解调度的过程,从而能在降低编译时间复杂度的同时,保证了程序性能的显著提升。
最后,这项研究工作具有很好的可扩展性,可支持多种异构硬件架构的代码自动生成,包括Intel的CPU以及NVDIA的GPU。特别地,这项工作已经在华为自研AI框架MindSpore的算子自动生成器MindAKG中落地,可支持昇腾系列AI芯片上的算子自动生成。
通过对包括神经网络、图像处理、稀疏矩阵计算、线性代数等应用领域在内的11项基准测试实验,该研究证明其方法能在先进的CPU、GPU及AI芯片架构上获得有效的性能改进。
在AI芯片华为昇腾910上,该论文提出的方法可将ResNet-50模型整个执行时间提升16%。
代码已开源
华为MindAKG相关代码已经在Gitee开源,用户既能从MindSpore侧构建,也能独立编译运行。
MindAKG当前已支持华为自研昇腾AI芯片、GPU V100/A100等硬件上的高性能算子自动生成。
MindAKG主要流程可以分为四个部分:
规范化:为了解决polyhedral表达能力的局限性(只能处理静态的线性程序),需要首先对计算公式IR进行规范化。规范化模块中的优化主要包括自动运算符inline、循环拆分和公共子表达式优化等。
自动调度:自动调度模块基于polyhedral技术,主要包括自动向量化、自动切分、依赖分析和数据搬移等。
指令发射:指令发射模块的优化主要包括循环规范化、标签自动生成和指令发射等。
后端优化:后端优化模块的优化主要包括双缓冲区、存储重写和同步指令插入等。
MindSpore期待开发者加入
今年国产AI框架如雨后春笋一般涌现,华为MindSpore也是其中一员。华为也是少有的具有自研AI框架、AI推理芯片、AI训练芯片的国内厂商。
华为Polyhedral技术获得MICRO最佳论文的提名,也说明了华为在AI基础技术上获得了国际认可。让我们看到了任正非口中的数学家在华为AI中起到的最大作用。
@mizhahu @changi @G1001
【 在 tianiu 的大作中提到: 】
: 你就是这个青椒?
:
--
FROM 223.104.68.*