ROSE介绍
由劳伦斯利弗莫尔国家实验室(LLNL)开发的ROSE是一个开源编译器基础架构,用于为大规模的源代码构建source-to-source程序转换和分析工具。支持C(C89和C98),C ++(C ++ 98和C ++11),UPC,Fortran(77,95,2003),OpenMP,Java,Python,PHP和二进制应用程序。 ROSE用户的范围从经验丰富的编译器研究人员到可能有最少编译器体验的库和工具开发人员。 ROSE特别适用于构建各种各样的工具,包括构建用于静态分析,程序优化,任意程序转换,领域特定优化,复杂循环优化,性能分析和网络安全的自定义工具。换一句话说,ROSE是一个和GNU C或者LLVM等同的开源框架,一般用它来造更高级的轮子。进一步的介绍,请移步ROSE官网
由于项目需要,在毕业设计和研究生课题中主要使用的ROSE,然后从ROSE进行进一步的开发来实现项目要求。
个人感觉,从功能上来说,ROSE丝毫不弱于LLVM,但是由于种种原因,ROSE的社区并不活跃,最后一个开源社区贡献时间是2013年。同时,由于在接触该项目时,项目已经进行了两年,接受别人的项目,开发一种从来没听说过的编译器,给整个毕业设计带来了很大的难度,一方面是思维的开拓的难度,另一方面是项目本身的难度。前边也提到,ROSE社区并不活跃,之前的贡献数量庞大,功能虽然强大,但是避免不了BUG,修改ROSE源码会面临注释比较少等各种问题。
但是,正如ROSE官网上所说,ROSE的主要项目目标是优化美国能源部的应用程序。众所周知,能源项目一般需要庞大的计算量,而且涉及到的很多都是科学计算。因此想要进行高性能大规模计算的不妨学习下ROSE。