我目前正在参加一个毕业级别的编译器课程,我正在寻找一个项目理念和/或一个总体方向来研究。我有一个6周的时间表来完成。
我看了post但这些想法已经过时了(帖子来自' 08)。
任何人都有我应该研究的好主意/平台吗?类分配已经使用LLVM完成,但我可以使用任何东西。
答案 0 :(得分:3)
6周是完成生产编译器改进的非常短的时间,我担心,特别是如果您还不熟悉LLVM。在LLVM中冷启动并期待在6周内发生任何有趣的事情(除了你所做的所有精彩学习之外,但这并不像提高性能/可用性/编译器的外部有趣: - ))
在这里给出答案的另一个警告:编译器是巨大的和精彩主题。它有很多不同的部分,其中许多都完全不同。如果不知道是什么让你的果汁流动,很难给出好的建议。这听起来像是你在学术机构,所以和你的教授交谈肯定也是一个好主意?
据说......
找到要做的事情的一种流行方法是将LLVM与GCC进行比较,看看GCC做得更好(相信我,尽管有LLVM的市场营销,GCC仍有很多事情做得更好;))< / p>
例如,如果您进入矢量化,LLVM有一个名为test-suite
的子项目,其中包含许多基准程序。其中一个称为TSVC
,它是一组用于测试矢量化功能的循环。最后我检查了(在去年内),GCC在找到减少比LLVM方面做得更好。即使你没有解决这个问题(我怀疑你会在6周内,但我很难过!),对现代机器的问题和一些最近的基准数据的撰写将引起社区的兴趣,也许自己。
如果你对前端(Clang)感兴趣,C ++的devirutalization背后是GCC的能力。写一篇文章,准确解释缺乏什么,以及如何处理它。同样,6周的时间总是来解决这个问题。
稍微多一点,通过LLVM的bugzilla拖网将向您显示很多的机会,让您做更小的事情。有很多悬而未决的果实。我看得很快,注意到了这个:
clang should optimize common patterns to portably read big/little-endian data
新手可以在6周内完成。通过拖网追踪器,您可以找到符合您自己兴趣的东西,而不是我的。
如果您更多地从事研究工作,那么请尝试使用一些新想法,并弄清楚如何使用LLVM来协助研究它。我不久前浏览了龙书的背页(我从未设法读过这本书的那部分作为学生),并且发现使用Datalog来表达别名分析约束的这个非常酷的想法。果然,快速的网络搜索找到了这个研究项目llmv-datalog on GitHub。所有源代码都在那里,为什么不运行一些你喜欢的研究想法的经验?如果您大致了解自己的拍摄对象,我觉得很难发现这些东西很容易被发现。
祝你好运!