LOOPRAG: Enhancing Loop Transformation Optimization with Retrieval-Augmented Large Language Models
作者: Yijie Zhi, Yayu Cao, Jianhua Dai, Xiaoyang Han, Jingwen Pu, Qingran Wu, Sheng Cheng, Ming Cai
分类: cs.PL, cs.AI, cs.DC, cs.PF
发布日期: 2025-12-12
备注: Accepted to ASPLOS 2026
💡 一句话要点
LOOPRAG:利用检索增强的大语言模型提升循环变换优化效果
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 循环变换优化 大型语言模型 检索增强生成 代码优化 编译器优化
📋 核心要点
- 现有循环变换优化面临成本建模复杂、搜索空间巨大等挑战,导致难以找到最佳变换组合。
- LOOPRAG通过检索增强生成框架,利用参数驱动的循环属性分析和循环感知检索,为LLM提供有效的循环优化指导。
- 实验表明,LOOPRAG在多个基准测试中显著优于传统编译器和现有LLM,实现了高达14.34倍的加速。
📝 摘要(中文)
循环变换是一种保持语义不变的优化技术,广泛用于最大化并行性等目标。尽管经过数十年的研究,由于固有的复杂性(包括优化目标的成本建模),应用循环变换的最佳组合仍然具有挑战性。最近的研究探索了大型语言模型(LLM)在代码优化方面的潜力。然而,我们的关键观察是,LLM在有效的循环变换优化方面常常表现不佳,经常导致错误或次优优化,从而错失了性能提升的机会。为了弥合这一差距,我们提出了LOOPRAG,这是一种新颖的检索增强生成框架,旨在指导LLM在静态控制部分上执行有效的循环优化。我们引入了一种参数驱动的方法来利用循环属性,触发各种循环变换,并生成多样但合法的示例代码作为演示源。为了有效地获得信息量最大的演示,我们提出了一种基于循环特征的循环感知算法,该算法平衡了代码检索的相似性和多样性。为了增强正确和高效的代码生成,我们引入了一种基于反馈的迭代机制,该机制结合了编译、测试和性能结果作为反馈来指导LLM。每个优化的代码都经过变异、覆盖率和差异测试以进行等价性检查。我们在PolyBench、TSVC和LORE基准测试套件上评估了LOOPRAG,并将其与编译器(GCC-Graphite、Clang-Polly、Perspective和ICX)和代表性LLM(DeepSeek和GPT-4)进行了比较。结果表明,对于PolyBench、TSVC和LORE,相对于基本编译器,平均加速分别高达11.20倍、14.34倍和9.29倍,相对于基本LLM,加速分别高达11.97倍、5.61倍和11.59倍。
🔬 方法详解
问题定义:论文旨在解决如何利用大型语言模型(LLM)进行有效的循环变换优化的问题。现有的LLM在循环优化方面表现不佳,容易产生错误或次优结果,无法充分利用循环变换的潜力。
核心思路:论文的核心思路是利用检索增强生成(RAG)框架,通过检索与目标循环相似且经过优化的代码片段,为LLM提供上下文信息,从而指导LLM生成更优的循环变换代码。同时,引入反馈机制,利用编译、测试和性能结果迭代优化LLM的生成过程。
技术框架:LOOPRAG框架主要包含以下几个模块:1) 循环属性提取:提取循环的特征参数,用于后续的代码检索。2) 示例代码生成:通过参数驱动的方法,生成多样且合法的循环变换示例代码。3) 循环感知检索:基于循环特征,平衡相似性和多样性,从示例代码库中检索最相关的代码片段。4) LLM代码生成:利用检索到的代码片段作为上下文,指导LLM生成优化的循环变换代码。5) 反馈迭代优化:通过编译、测试和性能评估,将结果反馈给LLM,迭代优化生成过程。
关键创新:LOOPRAG的关键创新在于:1) 循环感知检索:设计了一种基于循环特征的检索算法,能够有效地找到与目标循环相似且具有代表性的优化代码片段。2) 反馈迭代优化:引入了编译、测试和性能结果作为反馈,指导LLM进行迭代优化,从而提高代码生成的质量和效率。
关键设计:在循环感知检索中,论文设计了一种平衡相似性和多样性的检索算法,具体实现细节未知。在反馈迭代优化中,论文使用了变异测试、覆盖率测试和差异测试等方法进行等价性检查,确保优化后的代码与原始代码语义一致。具体参数设置和损失函数等细节未知。
🖼️ 关键图片
📊 实验亮点
实验结果表明,LOOPRAG在PolyBench、TSVC和LORE基准测试中,相对于基本编译器,平均加速分别高达11.20倍、14.34倍和9.29倍,相对于基本LLM(DeepSeek和GPT-4),加速分别高达11.97倍、5.61倍和11.59倍。这些数据表明LOOPRAG在循环变换优化方面具有显著优势。
🎯 应用场景
LOOPRAG可应用于编译器优化、自动代码生成、高性能计算等领域。通过自动化循环变换优化,可以显著提升程序的性能,降低开发成本,并加速科学计算和工程应用的运行速度。未来,该技术有望集成到各种开发工具和编译系统中,为开发者提供更智能的代码优化服务。
📄 摘要(原文)
Loop transformations are semantics-preserving optimization techniques, widely used to maximize objectives such as parallelism. Despite decades of research, applying the optimal composition of loop transformations remains challenging due to inherent complexities, including cost modeling for optimization objectives. Recent studies have explored the potential of Large Language Models (LLMs) for code optimization. However, our key observation is that LLMs often struggle with effective loop transformation optimization, frequently leading to errors or suboptimal optimization, thereby missing opportunities for performance improvements. To bridge this gap, we propose LOOPRAG, a novel retrieval-augmented generation framework designed to guide LLMs in performing effective loop optimization on Static Control Part. We introduce a parameter-driven method to harness loop properties, which trigger various loop transformations, and generate diverse yet legal example codes serving as a demonstration source. To effectively obtain the most informative demonstrations, we propose a loop-aware algorithm based on loop features, which balances similarity and diversity for code retrieval. To enhance correct and efficient code generation, we introduce a feedback-based iterative mechanism that incorporates compilation, testing and performance results as feedback to guide LLMs. Each optimized code undergoes mutation, coverage and differential testing for equivalence checking. We evaluate LOOPRAG on PolyBench, TSVC and LORE benchmark suites, and compare it against compilers (GCC-Graphite, Clang-Polly, Perspective and ICX) and representative LLMs (DeepSeek and GPT-4). The results demonstrate average speedups over base compilers of up to 11.20$\times$, 14.34$\times$, and 9.29$\times$ for PolyBench, TSVC, and LORE, respectively, and speedups over base LLMs of up to 11.97$\times$, 5.61$\times$, and 11.59$\times$.