LASSI:基于LLM的自动化自校正流水线,革新并行科学代码翻译
摘要
本文介绍了一种基于大型语言模型(LLM)的自动化自校正流水线LASSI,用于翻译并行科学代码。LASSI通过引导现有的闭源或开源LLM,实现了在OpenMP和CUDA之间的双向代码翻译。该框架通过自校正循环,将编译和执行过程中遇到的错误反馈给LLM,以进行调试和重构。实验结果表明,LASSI在不同应用代码和四个LLM上的评估显示了其生成可执行并行代码的有效性,其中80%的OpenMP到CUDA翻译和85%的CUDA到OpenMP翻译产生了预期的输出。
原理
LASSI的核心工作原理是利用LLM进行代码翻译,并通过自校正机制提高代码的准确性和性能。具体来说,LASSI首先准备源代码,确保其在本地环境中的可编译和可执行性。然后,通过一系列精心设计的提示工程策略,为LLM提供编程语言特定的上下文信息,引导LLM生成目标代码。生成的代码随后在本地环境中进行编译和执行,任何错误都会被捕获并通过特定的提示策略反馈给LLM,以进行代码的自我修正。这一过程循环进行,直到生成的代码能够无误地编译和执行。
流程
LASSI的工作流程包括以下几个关键步骤:
- 源代码准备:确保源代码在本地环境中可编译和执行,并捕获其标准输出以供后续比较。
 - 编程语言特定上下文准备:通过预定义的提示字典,为LLM提供特定于目标编程语言(如CUDA或OpenMP)的上下文信息。
 - 代码生成:结合编程语言知识、LLM生成的上下文摘要和源代码描述,构建完整的提示内容,提交给LLM生成代码。
 - 自校正循环:生成的代码在本地环境中编译和执行,任何错误都会通过特定的提示策略反馈给LLM进行修正,这一过程循环进行直到代码无误。
 
应用
LASSI的应用前景广阔,特别是在高性能计算(HPC)领域,能够自动化生成和优化并行科学代码,提高代码的可移植性和性能。此外,LASSI的LLM无关性使其能够适应不断更新的LLM技术,为未来的科学和工程应用提供持续的支持。
