Performance Evaluation of General Purpose Large Language Models for Basic Linear Algebra Subprograms Code Generation
作者: Daichi Mukunoki, Shun-ichiro Hayashi, Tetsuya Hoshino, Takahiro Katagiri
分类: cs.LG, cs.DC, cs.MS
发布日期: 2025-07-07
备注: 8 pages, 6 tables
💡 一句话要点
评估通用大语言模型在BLAS代码生成中的性能表现
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大语言模型 代码生成 BLAS 性能优化 高性能计算
📋 核心要点
- 现有方法在利用LLM自动生成高性能BLAS代码方面存在挑战,难以兼顾正确性和优化。
- 本文探索了利用通用LLM直接从例程名称或Fortran参考代码生成优化的C代码,无需人工干预。
- 实验表明,LLM在生成正确BLAS代码方面表现出色,并能实现线程并行化、SIMD向量化和缓存阻塞等优化,性能优于参考代码。
📝 摘要(中文)
本文评估了现有通用大语言模型(LLM)在为CPU生成基本线性代数子程序(BLAS)代码方面的能力。我们使用了OpenAI提供的两个LLM:GPT-4.1(一种生成式预训练Transformer模型)和o4-mini(推理模型o系列之一)。这两个模型均于2025年4月发布。对于从level-1到level-3 BLAS的例程,我们尝试生成:(1)仅从例程名称生成未优化的C代码;(2)仅从例程名称生成具有基本性能优化(线程并行化、SIMD向量化和缓存阻塞)的C代码;(3)基于Fortran参考代码生成具有基本性能优化的C代码。结果表明,即使仅给出例程名称,在许多情况下也可以生成正确的代码。我们还证实,可以在一定程度上实现使用OpenMP进行线程并行化、SIMD向量化和缓存阻塞,并且生成的代码比参考代码更快。
🔬 方法详解
问题定义:论文旨在评估通用大语言模型(LLM)在自动生成高性能BLAS(基本线性代数子程序)代码方面的能力。现有的BLAS代码通常需要手动编写和优化,耗时且容易出错。利用LLM自动生成BLAS代码可以显著提高开发效率,但如何保证代码的正确性和性能是一个挑战。
核心思路:论文的核心思路是利用LLM的强大代码生成能力,直接从BLAS例程的名称或Fortran参考代码生成优化的C代码。通过prompt工程,引导LLM生成包含线程并行化、SIMD向量化和缓存阻塞等优化技术的代码。
技术框架:论文采用的框架主要包括以下几个步骤:1)选择合适的LLM模型(GPT-4.1和o4-mini);2)设计不同的prompt,包括仅提供例程名称和提供Fortran参考代码;3)利用LLM生成C代码;4)编译和运行生成的C代码,并与参考代码进行性能比较。
关键创新:论文的关键创新在于探索了利用通用LLM自动生成高性能BLAS代码的可能性。与传统的代码生成方法相比,该方法无需人工干预,可以自动生成包含多种优化技术的代码。此外,论文还验证了LLM在理解和应用BLAS领域知识方面的能力。
关键设计:论文的关键设计包括:1)选择GPT-4.1和o4-mini作为LLM模型,因为它们在代码生成方面表现出色;2)设计不同的prompt,以评估LLM在不同输入条件下的性能;3)使用OpenMP进行线程并行化,使用SIMD指令进行向量化,并采用缓存阻塞技术来优化生成的代码。
📊 实验亮点
实验结果表明,即使仅给出例程名称,LLM也能在许多情况下生成正确的BLAS代码。生成的代码能够实现OpenMP线程并行化、SIMD向量化和缓存阻塞等优化,并且在性能上优于参考代码,验证了LLM在自动生成高性能科学计算代码方面的潜力。
🎯 应用场景
该研究成果可应用于高性能计算、科学计算、机器学习等领域,通过自动生成优化的BLAS代码,提高计算效率,加速算法开发。未来,该方法可扩展到其他科学计算库的代码生成,降低开发成本,促进相关领域的发展。
📄 摘要(原文)
Generative AI technology based on Large Language Models (LLM) has been developed and applied to assist or automatically generate program codes. In this paper, we evaluate the capability of existing general LLMs for Basic Linear Algebra Subprograms (BLAS) code generation for CPUs. We use two LLMs provided by OpenAI: GPT-4.1, a Generative Pre-trained Transformer (GPT) model, and o4-mini, one of the o-series of Reasoning models. Both have been released in April 2025. For the routines from level-1 to 3 BLAS, we tried to generate (1) C code without optimization from routine name only, (2) C code with basic performance optimizations (thread parallelization, SIMD vectorization, and cache blocking) from routine name only, and (3) C code with basic performance optimizations based on Fortran reference code. As a result, we found that correct code can be generated in many cases even when only routine name are given. We also confirmed that thread parallelization with OpenMP, SIMD vectorization, and cache blocking can be implemented to some extent, and that the code is faster than the reference code.