没错,是量子计算机。既然是计算机,就需要程序员,需要程序员就需要编译器。今天就来聊聊量子计算机的编译器,因为量子计算机还遥遥无期,所以就叫YY了。
这篇文章源自龙书第一作者,现在在哥伦比亚大学教书的Alfred V. Aho在 2008年PLDI上的一篇邀请讲座的PPT,能读懂英文的,请无视本文,原因嘛,我是中国人,你懂的,哈。 Continue reading »
没错,是量子计算机。既然是计算机,就需要程序员,需要程序员就需要编译器。今天就来聊聊量子计算机的编译器,因为量子计算机还遥遥无期,所以就叫YY了。
这篇文章源自龙书第一作者,现在在哥伦比亚大学教书的Alfred V. Aho在 2008年PLDI上的一篇邀请讲座的PPT,能读懂英文的,请无视本文,原因嘛,我是中国人,你懂的,哈。 Continue reading »
LLVM之父,相信有很多人都知道,Chris Lattner。从2000年开始,搞LLVM到现在。LLVM最初的想法还是来自Chris Lattner的导师:Vikram Adve。编译界的大牛。
这篇文章来自CGO 2009的Keynote:《The Next Generation of Compilers》,keynote是学术会议上的精彩环节,一般是该领域的最权威学者做主题演讲,演讲的内容是很前瞻,高屋建瓴性质的。 Continue reading »
上篇文章,以论文为主要依据,介绍了LLVM的概况和中间表示,本篇关注论文的后半部分内容–架构设计和LLVM的整体评测:
LLVM的架构设计以让传统的链接时,安装时,运行时和空闲时代码转换都能透明地在LLVM中间表示上展开为目的。上图就是LLVM的高层设计架构。包括静态的编译器前端用于生成LLVM中间表示;连接器用于做连接时优化,尤其是过程间优化。连接器的输出被JIT或者机器代码生成器生成机器代码。在机器代码生成时,可以通过插入低代价的抽样指令来测量运行时的profile,检测热代码,并将空闲时进行优化。
读论文<LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation> CGO 04
全时优化(LifeLong Optimization)对于每个编译爱好者来说,太有魅力了。我在起初也是被这个题目所吸引打算一探究竟。本文是04年LLVM的最早两位开发者Chris Lattner和Vikram Adve所写,发表在04年的CGO上,
先来说说LLVM的历史。2000年LLVM开始开发,2005年Apple雇了Chris Lattner,LLVM也相当于成了Apple的官方支持的编译器。Apple已经将它用在OpenCL的流水线优化,Xcode已经能使用llvm-gcc编译代码。可以说05年之前LLVM一直都是学术界的东西,05年之后用于工业界.而这篇文章写在04年.本博最近听过一个关于LLVM的讨论会,会中有资深人士提到LLVM现在越来越像一个普通的编译器。说这番话的意思是,我们可以从这篇文章里找到LLVM的架构设计和早期的一些实现思想,但请不要迷信LLVM现在有多么神奇,每个架构都会有它的优缺点。
这篇文章,我现在已经读完了理论和介绍部分,性能评测部分还没有读。所以标题里面加了个1,因为接下来,还想作几件事,一是读完文章,二是跟踪一下Chris Lattner最近几年的文章,三是尝试将Open64和LLVM做个对比,最后看看代码。所以敬请期待之后的系列文章。
Continue reading »
读PLDI 04 Best Paper Award 《Automatically Proving the Correctness of Compiler Optimizations》
By Sorin Lerner.Todd Millstein and Craig Chambers in Washington U
本博自从接触编译器到现在,几乎都每天都能听到bug这个关键字,编译器中的bug很痛苦,首先,人写的程序很复杂,编译器设计者很难想出所有的情况并一并处理之;其次,编译器的bug很难调,要先排除程序本身的错,接着需要知道到底是分析时出错还是变换时出错;还有这些错都是在怎样的分析和变换中出了错;最后还要担心错误会不会越不越多,没有对编译器整体的理解,很难给编译器打上正确的补丁,从而有可能这个例子补对了,其他又错了一片.
作者在文章里就编译优化正确性的自动证明做了一些尝试,这些尝试在读完文章之后觉得很了不起,只是这里面提到的工作做下来,也是需要很大的积累和投入.作者的尝试我概括如下:将优化分为转换和具体优化两个部分.代码的转换是所有优化都要做的,而并非所有的转换都是优化,所以作者通过增加利益驱动模块来判断某个转换是否是优化,这样优化的自动证明问题,就变成了某个转换正确性的自动证明问题;正确性的定义:转换前后的语义保持不变.接着作者按照转换依据的信息来自转换语句之前还是之后,将转换分成两种模式,即前向转换模式和后向转换模式.然后分别对这两种模式进行讨论,而自动证明也分别针对这两种模式来论述. Continue reading »
这是Fred chow 在德拉华大学所讲的open64课程讲稿的翻译。若需要原文ppt,请发邮件向我索取。
转载请注明出处: http://lingcc.com
Fred Chow 原版幻灯片见最后一页
1,历史:
1980-83 斯坦福大学RISC编译器研究
1987 MIPS Ucode编译器(R2000) -O2下的全局优化
1991 MIPS UCode编译器(R4000) -O3下的循环优化
另外:
1989 Cydrome Cydra5编译器 软流水优化
1994 SGI Ragnarok编译器(R8000) 浮点性能优化(Floating-pt performance?)
1997年SGI将上面两个分支连同斯坦福SUIF的工作,Rice的IPA整合在一起发布MIPSpro编译器(R10000)
2000年Pro64/Open64编译器(安腾)诞生
2,Open64大事记:
Continue reading »
| 2009-2011© 编译点滴 | Suffusion theme by Sayontan Sinha |
近期评论