循环程序的优化一直是程序优化的重点,循环分块作为一种典型的循环程序优化技术已被广泛研究和应用。分块大小的选择对循环程序的性能有着重要影响,分块大小的选择复杂多变且高度依赖程序和硬件。传统的静态分析和启发式经验搜索的人工和时间成本过高,缺少通用性和可移植性。为此,考虑使用神经网络方法来学习程序与硬件复杂交互过程中分块大小与程序性能的隐含关联。从问题规模、循环结构、循环内操作的局部性等方面抽取出一组新的29维特征,对问题规模为1024~2048的随机大小的6类内核程序(3维循环、2维数据)的数十万行示例进行实验。串行模型(TSST6)相比GCCO2默认优化实现了6.64倍的平均加速比,相比穷尽搜索实现了98.5%的平均最大可用性能,相比Pluto默认分块优化实现了平均9.9%的性能提升。并行模型(TSSP-T6-Search)相比Openmp默认优化实现了2.41倍的平均加速比,相比穷尽搜索实现了91.7%的平均最大可用性能,同时与Pluto默认分块并行优化相比得到了平均9%的性能提升。
暂无评论