【基于神经网络的循环分块大小预测】
循环程序优化是程序优化的核心部分,而循环分块作为优化技术的一种,能够显著提升程序性能。循环分块技术通过将大循环拆分为小块,改善内存访问模式,减少缓存冲突,进而提高执行效率。然而,选择合适的分块大小是一个复杂的问题,它既依赖于程序的内在结构,也受到硬件资源限制的影响。传统的静态分析和启发式搜索方法在处理这个问题时面临高成本和低效率的问题,难以适应各种不同的程序和硬件环境。
为了克服这些挑战,本文提出了一种基于神经网络的方法来预测循环分块的最优大小。神经网络因其在高维度数据表示方面的优势,能够学习并捕获程序和硬件交互过程中的复杂关系。这种方法提取了包括问题规模、循环结构、循环内操作局部性等在内的29维特征,以构建一个能够理解程序性能和分块大小之间关系的模型。
实验结果显示,该神经网络模型在处理3D循环和2D数据的数十万个随机大小的内核程序实例时,表现出了优越的性能。在串行模型(TSSGT6)下,相比于GCC的默认优化,平均加速比提高了6.64倍,与穷尽搜索相比,平均最大可用性能达到98.5%的水平,而且相对于Pluto的默认分块优化,性能提升了9.9%。在并行模型(TSSPGT6GSearch)中,相对于OpenMP的默认优化,平均加速比提高了2.41倍,平均最大可用性能达到了91.7%,并且在与Pluto的默认分块并行优化对比中,仍然获得了平均9%的性能提升。
这个工作的重要意义在于,它为编译器优化提供了一个自动调优的工具,使得循环程序的优化更加智能化和高效。神经网络模型能够自适应地学习不同程序和硬件的特性,从而动态预测最佳分块大小,这不仅减轻了人工设计和优化的负担,也提高了优化结果的通用性和可移植性。
关键词:编译优化,自动调优,循环程序分块,人工神经网络,缓存优化
中图法分类号:TP314
本文的研究成果是利用神经网络对循环程序的分块大小进行预测,通过深度学习的方法解决了传统方法在时间和效率上的不足,实现了对程序性能的优化,并在实际应用中取得了显著的效果。这一方法对于提升程序性能,特别是在大规模计算和并行处理场景下的优化具有重要价值。未来的研究可能将进一步探索更复杂的神经网络架构,以适应更多变的程序结构和硬件环境,或者结合其他优化技术,如动态调整、在线学习等,以实现更高效的循环优化。