并行面向对象科学应用的编译时优化相关技术解析
1. 角色规范语言简介
在软件开发中,对于动态变化的数据结构中对象不变量的规范描述,需要一种专门的语言。我们所使用的用于指定特定上下文不变量的子语言,与相关逻辑有相似之处。它在堆操作的精确效果描述方面有独特作用,不过目前在描述堆上精确过程效果的语言方面研究较少。
这种语言主要包含三个子语言:
- 角色定义子语言 :能根据对象在不同数据结构中的成员身份对对象进行分类,还能指定一些基本的数据结构堆不变量。
- 不变量规范子语言 :可用于传达额外的特定上下文可达性和别名属性。
- 过程效果子语言 :旨在捕获短过程的精确效果,并总结从过程参数可达的堆区域中执行的复杂修改。
构建这种语言的目的是为基于组合的流敏感过程间程序分析奠定基础。这种分析不仅能增强程序员对程序正确性的信心,还能实现各种程序转换。
2. 并行面向对象科学应用优化的挑战与 ROSE 机制
2.1 挑战背景
在科学计算中,面向对象应用程序的性能常因底层库提供的高级抽象使用效率低下而受到影响。这些库抽象是用户自定义的,并非编程语言本身的一部分,因此编译器无法理解其语义,难以进行适当的优化。此外,并行性的引入进一步加剧了编译时优化的问题,串行编译器无法引入可扩展的并行优化,导致并行应用程序的优化潜力大量流失。
2.2 ROSE 机制介绍
为解决上述问题,我们提出了一种基于预处理器的机制 ROSE,用于优化使用面向对象库提供的高级抽