摘要
目前主流的优化编译器无法通过已有的循环变换技术使得含有结构体计算类型引用的循环被优化处理,而结构体计算类型存在于大量的科学计算程序中,严重影响了程序性能的提升.本文从两方面考虑,提出了结构体向量化中的存储优化方法.首先针对结构体在内存中的存储存在"间隙"的问题,提出了结构体的存储预优化算法,压缩结构体的存储空间;其次为了发掘程序中更多的向量化机会,本文提出了程序单元(PU)内结构体数组的动态数据重组优化方法,对程序进行进一步的优化,在当前PU内通过改变结构体数组在内存中存储方式,使得包含结构体数组引用的循环能够被向量化.实验结果证明,文中提出的优化方法对SPEC CPU标准测试程序组中的部分应用程序具有明显的性能提升.
Nowadays, loops containing struct references can't be optimized by most loop transformation technologies in mainstream op- timization compiler. Struct references are existed in a large number of scientific computing program, which is a main challenge to im- prove program performance. Firstly,in order to reduce storage space of structure,a preliminary optimization algorithm is proposed to remove storage gap in accessing memory of structure. Then,a dynamic data regrouping method of structure array is proposed in pro- gram unit ( PU ). The method changes storage layout of structure array in current PU, making the loops which contain struct references vectorized. It optimizes applications further and explores more vectorizable probability. The experimental results show that the proposed method can advance the execution efficiency of some applications in SPEC CPU adequately.
出处
《小型微型计算机系统》
CSCD
北大核心
2016年第9期1889-1897,共9页
Journal of Chinese Computer Systems
基金
国家自然科学基金项目(61472447)资助
关键词
结构体数组
数据重组
存储优化
向量化
structure array
data regrouping
storage optimizing
SIMD vectorization