现有的编译器依赖于对微体系结构和程序特征的静态建模,所产生的目标代码缺乏对于不同运行时上下文的自适应性。本项目研究利用迭代编译和多版本技术提高程序的自适应性和性能的方法。主要研究内容包括(1)研究上下文特征量的分析、提取、及表示方法,提供对上下文进行抽象的手段;(2)研究快速衡量版本在特定上下文中的相似度的方法,以利用Memoization等技术加速对版本空间的搜索;(3)研究抽取程序核心单元及其上下文特征量实现受控运行的机制,支持以核心单元为单位的调优;(4)研究利用机器学习和数据挖掘方法拟合版本选择函数,从适用范围、效果、和开销等几方面对包括决策树、实例学习、贝叶斯学习等在内的多种学习方法进行评价,利用多种学习方法的组合来改进版本映射的精度;(5)研究多版本导致的代码膨胀及其对I-Cache访问的影响。通过本项目的研究,能够提高程序对不同运行时上下文的自适应性,从而提高其性能。
英文主题词Iterative compilation; Auto-tuning; Multi-versioning; Adaptive optimization; Machine learning