# awesome_compiler **Repository Path**: leonexu/awesome_compiler ## Basic Information - **Project Name**: awesome_compiler - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-05 - **Last Updated**: 2024-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 优化 ## 24, BaCO: AFast and Portable Bayesian Compiler Optimization Framework 本文介绍了一个名为BaCO(Bayesian Compiler Optimization framework)的贝叶斯编译器优化框架,旨在解决现代编译器针对CPU、GPU和FPGA等多样化硬件后端的自动调优(autotuning)任务。BaCO框架通过提供必要的灵活性来处理现代自动调优任务的要求,特别是涉及排列、有序和连续参数类型以及已知和未知参数约束的情况。 ### 解决的问题: - **现代编译器的自动调优**:随着硬件的多样化和复杂化,编译器的优化任务变得更加复杂,需要自动调优来寻找好的调度策略。 - **参数类型的多样性**:编译器的优化空间可能包括连续参数、离散参数、排列参数等,这些都需要不同的处理方式。 - **已知和未知的参数约束**:自动调优过程中需要处理事先知道的约束(已知约束)和在调优过程中发现的约束(隐藏约束)。 ### 使用的方法: - **贝叶斯优化算法**:BaCO使用专门针对自动调优领域的贝叶斯优化算法,以高效地提供高质量的代码。 - **链式树技术(Chain-of-tree technique)**:在贝叶斯优化设置中用于稀疏搜索空间的便携式自动调优。 - **高斯过程(Gaussian Process)**:作为代理模型,估计目标函数,并提供有用的不确定性估计,以平衡探索和利用。 - **获取函数(Acquisition function)**:使用期望改进(Expected Improvement, EI)获取函数,通过多起点局部搜索优化。 ### 使用的评估基准: - **TACO**、**RISE & ELEVATE** 和 **HPVM2FPGA**:分别为CPU、GPU和FPGA编译系统的现代编译器框架。 - **15个不同的内核**:涵盖线性代数、机器学习、图像处理、统计和信号处理等领域。 ### 获得的收益: - BaCO在所有评估的领域中,与现有的最先进自动调优器相比,平均提供了1.36倍至1.56倍更快的代码,并且使用极小的搜索预算就能达到专家级性能,比现有方法快2.9倍至3.9倍。 - BaCO能够跨不同编译器框架和硬件目标可靠地生成好的调度,无需针对每个编译器进行定制,如超参数调整或自定义约束过滤。 - BaCO在TACO上的性能比现有技术快3.15倍至5.0倍,在RISE & ELEVATE上的性能在小预算下比现有技术好1.35倍至1.58倍,在HPVM2FPGA上达到峰值性能快2.43倍至2.77倍。 综上所述,BaCO框架通过其高效和可移植的贝叶斯编译器优化技术,显著提升了代码生成的性能,并且减少了寻找最优编译配置所需的时间和计算资源。 ## 24, LLM-Vectorizer: LLM-based Verified Loop Vectorizer,https://arxiv.org/pdf/2406.04693 ### 概述 论文探索了利用大型语言模型(LLM)和有限状态机(FSM)自动生成正确和高效的循环矢量化优化的能力。论文提出了LLM-Vectorizer工具,该工具结合了LLMs (GPT-4)和形式验证技术(Alive2),成功地为149个测试程序中的125个生成了可行的向量化代码,比现有的编译器优化技术有显著提升。 ### 关键要点 - 大型语言模型(LLM)如GPT-4可以生成高性能的矢量化代码,其性能超过了GCC、Clang和ICC等最先进的编译器。[4][5][6] - LLM-Vectorizer采用有限状态机(FSM)的多智能体设计,可以减少LLM调用次数,并通过反馈机制修复生成的不正确的矢量化代码。[17][18][19][20] - LLM-Vectorizer利用Alive2进行符号式形式验证,证明了38.2%的矢量化操作是正确的。[21][22][23][24][25][26] - 论文提出了多种优化技术,如C级别循环展开和空间案例拆分,显著提高了Alive2的性能和可扩展性。[27][28][29][30][31][32][33][34] - LLM-Vectorizer生成的矢量化代码平均达到1.1倍到9.4倍的性能提升,超越了现有编译器。[4][51][52][53][54][55][56] 编译器(如 GCC、LLVM 等)与本文没有直接的关系。编译器是将高级编程语言转换为机器可执行的目标代码的软件工具。而本文可能涉及的内容包括: 1. 编程语言的语法和语义分析:编译器需要理解编程语言的语法结构和语义含义,这可能涉及到语法分析、语义分析等技术,这些技术可能会在本文中提及。[1] 2. 编译器的构建:编译器本身也是一种软件系统,它的设计和实现可能会在本文中讨论,比如使用 Roslyn 这样的编译器平台来构建自定义编译器。[4] 3. 编译器与操作系统的关系:编译器生成的目标代码需要与操作系统协作运行,因此编译器的设计也需要考虑操作系统的特性。本文可能会涉及这方面的内容。[2] 4. 编译器与构建工具的集成:编译器通常需要与构建工具(如 MSBuild)集成,以支持项目构建和依赖管理等功能,本文可能会涉及这方面的内容。[3] 总之,虽然本文可能没有直接涉及编译器的实现细节,但它可能会涉及编译器相关的一些概念和技术,值得进一步探索。 ## 24, LPR: Large Language Models-Aided Program Reduction,https://www.shinhwei.com/lpr.pdf ### 总结 该文章提出了 LPR (LLMs-Aided Program Reduction), 这是目前第一个将大型语言模型 (LLMs) 应用于程序缩减的方法。LPR通过结合语言通用程序缩减工具和LLMs的优势,在保持语言通用性的同时,还能利用LLMs学习到的语义知识对程序进行针对性的转换从而进一步缩减,从而达到平衡语言通用性和针对性的目标。大量评估结果表明,LPR在3种编程语言(C、Rust和JavaScript)的50个基准测试中,都显著优于目前最先进的通用程序缩减工具Vulcan,分别提高了24.93%、4.47%和11.71%的缩减效果。同时,LPR在复杂程序的缩减效率上也优于Vulcan,分别节省了10.77%、34.88%和36.96%的时间。 ### 关键要点 - 提出了第一个将LLMs应用于程序缩减的方法LPR。 [1][7] - LPR通过交替使用通用程序缩减工具(Perses)和LLMs,同时利用两者的优势,在保持语言通用性的同时,也能利用LLMs学习到的语义知识对程序进行深入的缩减。 [7][17][18] - LPR提出了5种通用的程序转换方法,包括函数内联、循环展开、数据类型消除、数据类型简化、变量消除。这些转换方法能够有效地进一步缩减程序。 [23][24][25][26][27] - LPR采用了分层提示的方法来引导LLMs有效地执行程序转换,大大提高了转换的质量。 [33][34] - 在3种编程语言的50个基准测试中,LPR均显著优于目前最先进的通用程序缩减工具Vulcan,在缩减效果和运行效率上都有较大提升。 [41][42][46][47][48][49] 是的,本文与编译器有密切关系。根据文章内容: 1. 该文提出的LPR方法是用于帮助调试编译器的程序缩减技术。它可以针对触发编译器bug的程序进行自动化缩减,生成更小的程序来方便调试。 2. 文中使用了两个编译器相关的基准测试集: - Benchmark-C: 包含20个触发LLVM或GCC编译器bug的大型复杂C语言程序 - Benchmark-Rust: 包含20个触发Rust编译器bug的程序 3. 在评估中,LPR方法与现有的通用程序缩减工具Perses、Vulcan以及专门针对C语言的C-Reduce进行了对比,体现了LPR在编译器相关程序缩减任务中的优势。 总之,这篇文章提出的LPR技术是针对编译器调试这一应用场景进行的,充分利用了大型语言模型在理解程序语义方面的优势,以提高程序缩减的效果和效率。 ## 24, Should AI Optimize Your Code? A Comparative Study of Current Large Language Models Versus Classical Optimizing Compilers ### 摘要 该论文提出了一种新的性能和正确性评估框架 PCAOT,用于测试各种自动优化工具(AOTs),包括两种大型语言模型(LLMs)GPT-4.0和CodeLlama-70B,以及三种传统优化编译器CETUS、PLUTO和ROSE。此外,论文还介绍了一个包含20个独特案例的新基准套件PCB v1.0,用于测试AOTs的优化功能。研究结果表明,尽管LLMs在代码优化任务上表现出潜力,但其正确性和性能仍然远低于传统优化编译器。 ### 关键要点 - 提出了PCAOT框架,用于自动验证AOTs生成代码的正确性和性能. [3][6][7][9] - 介绍了PCB v1.0基准套件,其中包含6种具有挑战性的优化模式. [10][16][17][18][19][20][21][22][23][24] - 评估了两种LLMs(GPT-4.0和CodeLlama-70B)和三种优化编译器(CETUS、PLUTO和ROSE)在优化任务上的性能. [27][28][29][30][31][32][33][34][35][36][37][38][39][40] - 发现LLMs在处理大型代码和正确优化复杂代码方面存在局限性,而传统编译器在某些测试案例上表现更优. [2][12][13][14][15][25][26] - 未发现Chain of Thought和Instruction Prompting在LLMs优化性能上有显著差异. [11][41][42][43][44][45][46][47] ## 24, Compiler Autotuning through Multiple Phase Learning 这篇文章提出了一个名为 CompTuner 的编译器自动调优技术,旨在减轻为特定程序进行编译器调优的人力负担。下面是对文章内容的总结: 解决的问题: - 编译器优化通常涉及大量的优化选项(称为优化旗标),手动调优非常耗时且困难。 - 现有的自动调优技术面临成本和性能问题,尤其是在面对大量优化选项时。 方法: - **多阶段学习**:CompTuner 通过多阶段学习构建预测模型,使用少量数据预测编译选项组合的运行时性能,而不是实际执行。 - **改进的粒子群优化算法**:CompTuner 设计了一种改进的粒子群优化算法,通过修改加速常数平衡局部最优和全局最优,以选择最佳的编译优化旗标组合。 评价标准: - **运行时性能提升**:与 GCC 和 LLVM 编译器的默认 -O3 优化设置相比,CompTuner 选择的优化旗标组合是否能提供更好的运行时性能。 - **与现有技术的比较**:CompTuner 与现有的编译器自动调优技术(包括最新的 BOCA 技术)相比,在多个目标程序上的运行时性能。 效果: - CompTuner 在大多数目标程序上实现了比默认 -O3 优化更好的运行时性能,显著优于现有的编译器自动调优技术。 - 在 GCC 和 LLVM 上的实验结果表明,CompTuner 在大多数情况下都能取得最佳的运行时性能,证明了其有效性。 - 消融分析也展示了 CompTuner 中每个组件的贡献。 附加信息: - 文章还讨论了调优时间、编译器版本、优化旗标数量、多阶段模型构建和阶段排序技术对性能的影响。 - CompTuner 与专门针对阶段排序的技术(如 AutoPhase)进行了比较,显示出 CompTuner 在某些情况下具有优势。 ## 23, Parsimony: Enabling SIMD/Vector Programming in Standard Compiler Flows 要在现代CPU上实现峰值吞吐量,需要最大限度地利用SIMD或矢量计算单元。SPMD编程模型是使用高级编程语言针对这些指令集架构的有效方式。然而,许多SPMD框架要么语言规范过于严格,要么编程模型定义不够清晰,这阻碍了SPMD风格编程的广泛采用。 本文介绍了Parsimony,这是一种SPMD编程方法,其设计旨在与多种语言兼容,并能无缝集成到标准的优化编译器工具链中。Parsimony编程模型语义支持一种独立的编译器IR到IR的传递,可以独立于其他传递进行矢量化,从而提高了SPMD编程的语言和工具链兼容性。 作者展示了Parsimony在LLVM上的原型实现,其性能与流行但限制更多的SPMD方法ispc相当,并在70多个基准测试中达到了手写AVX-512 SIMD内置函数性能的97%。最后,文章讨论了Parsimony暴露出的一些现有语言和编译器流程中的细微改进点,这些改进可以进一步促进SPMD程序矢量化。 ## 2023年华为毕昇杯技术培训会 ### 第五场(1):RISC-V指令集介绍及程序优化技术,https://www.bilibili.com/video/BV1CV411L7TK ### 第六场(1):针对RISC-V代码密度优化的寄存器分配方法的研究与实现,https://www.bilibili.com/video/BV13m4y1j7X9/ ### 第六场(2):代码尺寸优化方法,https://www.bilibili.com/video/BV1Su411374e/ ### 第六场(3):Code Size优化思路分析,https://www.bilibili.com/video/BV1cP411k7fG/ ## 22, Understanding and Exploiting Optimal Function Inlining [Understanding and Exploiting Optimal Function Inlining (ethz.ch)](https://ethz.ch/content/dam/ethz/special-interest/infk/ast-dam/documents/Theodoridis-ASPLOS22-Inlining-Paper.pdf) 1. 解决的问题: - 研究函数内联优化的最优解,并与现有编译器策略进行对比分析。 2. 使用的方法: - 提出了一种新的函数内联搜索空间模型,大幅降低了搜索复杂度。 - 在SPEC2017基准测试程序上进行了详尽的最优内联分析。 - 基于最优内联分析的结果,设计了一种简单有效的自动调参策略。 3. 测试用例: - 主要使用了SPEC2017基准测试程序,涵盖了387个C/C++源文件。 - 同时也在LLVM和SQLite的源代码上进行了测试。 4. 优化效果: - 与现有编译器内联策略相比,发现存在较大差距,最高可达281%的代码大小增长。 - 作者提出的自动调参策略在SPEC2017上平均可以减小7%的代码大小,最高可达28%。在LLVM和SQLite源码上也分别取得了15%和10%的优化效果。 总之,这篇论文通过深入研究函数内联的最优解,发现了现有编译器策略的不足,并提出了一种简单有效的自动调参方法,在代码大小优化方面取得了显著的成果。 ## 21, MLGO:a Machine Learning Guided Compiler Optimizations Framework 本文解决的问题是:如何将机器学习技术应用于编译器优化,以提高编译器的性能。文章提出了MLGO框架,使用强化学习(RL)和进化策略(ES)算法,在LLVM编译器中实现了内联优化(inlining-for-size)。 方法: 1. 将内联优化问题建模为马尔可夫决策过程(MDP),使用RL算法(如PPO)训练内联决策策略。 2. 同时也尝试使用ES算法训练内联策略,ES算法相比RL更简单易用。 3. 为了加快训练,使用行为克隆(behavioral cloning)预训练一个初始策略,作为RL或ES训练的热启动。 4. 在LLVM中实现了RL和ES训练的基础设施,包括特征提取、模型评估等。 测试用例: 使用一个代码库作为训练语料,训练内联策略模型。将训练得到的模型应用于LLVM编译器,与LLVM默认启发式算法进行对比,在代码大小优化方面取得了7%的改善。 成效: 1. 成功将机器学习技术应用于LLVM编译器优化,实现了内联优化的自动化。 2. 提出了MLGO框架,为将来在编译器中应用机器学习提供了指导。 3. 通过RL和ES两种算法的对比,发现ES算法相比RL更简单易用,但样本效率较低。 总的来说,本文提出了一种将机器学习应用于编译器优化的框架MLGO,并在LLVM中实现了内联优化的案例研究,取得了一定成效。 ## 先进编译实验室 ### 程序性能优化理论与方法实操课程 https://space.bilibili.com/1540261574/channel/collectiondetail?sid=2438259 #### 第五章—链接时优化 https://www.bilibili.com/video/BV1ZD421p7Gy ### 程序性能优化理论与方法 https://space.bilibili.com/1540261574/channel/collectiondetail?sid=1381498 ### TVM https://space.bilibili.com/1540261574/channel/collectiondetail?sid=708685 ## 21, VeGen: A Vectorizer Generator for SIMD and Beyond,https://groups.csail.mit.edu/commit/papers/2021/vegen.pdf 根据文章总结,这篇论文主要解决了以下问题: 1. 问题:现有的编译器自动矢量化技术主要针对 SIMD 指令,无法很好地利用非 SIMD 矢量指令,需要复杂的特定于目标的优化。 2. 方法: - 提出了 Lane Level Parallelism (LLP) 模型,能够描述 SIMD 和非 SIMD 矢量指令的并行模式。 - 设计了 VeGen 框架,能够自动生成针对目标架构的矢量化器,只需输入指令语义。 - VeGen 的矢量化算法可以协调向量操作数的生成,提高了对非 SIMD 指令的利用效率。 3. 效果: - VeGen 生成的矢量化器能够有效利用复杂的非 SIMD 指令,在 x265 的 idct4 内核上获得了 3 倍的性能提升。 - 与手工优化相比,VeGen 大幅降低了开发者的工作量。 总的来说,本文提出了一种新的矢量并行模型 LLP,并设计了 VeGen 框架来自动生成针对目标架构的高效矢量化器,解决了现有编译器无法充分利用非 SIMD 矢量指令的问题。 根据文章内容,本文的主要测试benchmark如下: 1. x265的idct4内核: - 文章提到,VeGen生成的矢量化器在这个内核上获得了3倍的性能提升,相比LLVM的矢量化器。 2. 其他dot-product类型的内核: - 文章第2节中给出了一个TVM 2D卷积层中使用的dot-product内核作为示例(图2(a))。 - 文章对比了ICC、GCC、LLVM以及VeGen生成的汇编代码和性能数据(图2(b)-(e))。 可以看出,作者主要针对数字信号处理和机器学习等领域中常见的dot-product和卷积计算类型的内核进行了测试和评估,验证了VeGen在利用非SIMD指令方面的优势。 # 测试 ## 24, High-Throughput, Formal-Methods-Assisted Fuzzing for LLVM,https://users.cs.utah.edu/~regehr/papers/cgo24.pdf ### 总结 High-Throughput, Formal-Methods-Assisted Fuzzing for LLVM是一篇关于开发一个名为alive-mutate的编译器模糊测试工具的论文。该工具利用Alive2翻译验证器,通过对LLVM中间表示代码进行随机变异,发现LLVM优化器中的错误。作者声称alive-mutate的测试吞吐量比传统的分布式测试工作流高12倍。 ### 关键要点 - alive-mutate是一个针对LLVM编译器进行模糊测试的工具。Index [0][1][2] - alive-mutate采用随机变异技术,基于假设编译器开发者编写的测试用例可能会遗漏一些边界情况。Index [3] - alive-mutate与Alive2翻译验证器集成,能够在单个进程内执行变异、优化和形式验证,从而提高测试效率。Index [4] - alive-mutate支持多种变异操作,包括函数和参数属性修改、指令重排、算术指令变异等。Index [14][15][16][17][18][19][20][21][22] - 作者使用alive-mutate在LLVM编译器中发现了33个之前未知的Bug,其中19个导致了错误的代码生成。Index [31][34][35][36][37][38][39] - 作者通过实验证明,alive-mutate的测试效率比传统的分布式测试工作流高12倍。Index [40][41] ## 24, Fuzz4All: Universal Fuzzing with Large Language Models,https://dl.acm.org/doi/pdf/10.1145/3597503.3639121 ### 摘要 Fuzz4All 是一个通用的模糊测试器, 利用大型语言模型来同时支持通用和有针对性的模糊测试。该工具可适用于各种编程语言和系统, 通过自动生成提示和迭代生成测试输入, 发现了98个之前未知的错误。 ### 关键要点 - Fuzz4All 是一个通用的模糊测试器, 使用大型语言模型作为输入生成和变异引擎。[1] - Fuzz4All 包括一个自动生成提示的步骤, 将用户提供的文档自动浓缩为有效的测试输入提示。[9][12] - Fuzz4All 在测试循环中, 通过选择之前生成的示例和生成策略来不断更新输入提示, 生成新的测试输入。[10] - 在对9个系统和6种语言的评估中, Fuzz4All 相比现有最先进的工具, 平均提高了36.8%的代码覆盖率, 并发现了98个之前未知的错误。[55][56][57][58][59][60] - Fuzz4All 不仅支持通用的模糊测试, 还可以针对特定的语言特性进行有针对性的测试, 大幅提高了命中率。[64][65][66] 根据文章内容,Fuzz4All确实与编译器有很大关系: 1. 文章提到,Fuzz4All被用于测试多种编程语言的系统,包括C、C++、Go等,这些都是编译型语言,编译器是其核心组件。 2. 在评估中,Fuzz4All发现了许多GCC和Clang(LLVM编译器前端)中之前未知的bug。这说明Fuzz4All非常适合用于测试和发现编译器中的错误。 3. 文章指出,传统的针对特定语言的模糊测试器,如Csmith针对C/C++编译器,设计和实现起来非常复杂耗时。而Fuzz4All作为一种通用的模糊测试器,可以很方便地应用于不同的编译器系统。 4. 随着编程语言的不断发展,现有针对特定版本编译器的模糊测试器往往会失去效用。而Fuzz4All可以很好地适应编译器的演化,为新增加的语言特性提供有效的测试。 总之,编译器作为处理编程语言输入的关键组件,Fuzz4All的通用性和有效性在于它可以很好地适用于各种编译器系统的测试,发现编译器中的隐藏缺陷。这是本文的一个重要贡献。 ## 24, White-box Compiler Fuzzing Empowered by Large Language Models,https://arxiv.org/pdf/2310.15991 ### 总结 本文介绍了一种新型的白箱编译器模糊测试方法 WhiteFox,其采用了基于大型语言模型(LLM)的双模型框架。它通过分析优化实现代码来获取触发优化所需的高级输入模式,然后利用生成型 LLM 合成出具有这些模式的测试用例,以有效地触发编译器中的各种优化并发现潜在的bugs。WhiteFox 在对流行的 C/C++ 和深度学习编译器的测试中,能够覆盖2.5倍于现有方法的优化,并发现了96个之前未知的bugs,其中51个已被修复。 ### 关键要点 - 提出利用LLM进行白箱编译器模糊测试的方法,可有效触发优化并发现bugs。[0][1][2][3][4] - 针对优化实现代码的复杂性,提出了一种分析LLM和生成LLM协作的双模型框架,可自动生成触发优化的高级输入模式。[15][16][17][18] - 提出了基于反馈的测试生成机制,可进一步提高触发优化的测试用例的生成效率。[45][46][47][48][49][50][51][52] - 在4款主流编译器上的测试中,WhiteFox 相比现有方法能触发2.5倍以上的优化,并发现96个之前未知的bugs。[68][69][70][71] - WhiteFox有望推广应用于其他复杂软件系统的白箱模糊测试。[16] ## 23, LLM4VV: Developing LLM-Driven Testsuite for Compiler Validation,https://arxiv.org/pdf/2310.04963 ### 总结 本文探讨了使用大型语言模型(LLM)自动生成OpenACC编译器测试用例的可行性。研究人员选择了几种不同的LLM并评估了它们在生成正确的OpenACC验证测试用例方面的表现。结果显示,DeepSeek-Coder-33b-Instruct生成的通过率最高。但是即使是最好的LLM,其生成的测试用例也存在一些问题,需要人工评估和修正。 ### 关键要点 - 研究了使用OpenAI GPT-4-Turbo、GPT-3.5-Turbo以及Meta AI Codellama-34b-Instruct、Phind-Codellama-34b-v2、DeepSeek-Coder-33b-Instruct等LLM生成OpenACC编译器测试用例的性能。[1][2][3][4][7] - 探索了不同的提示工程技术,包括使用模板、单次示例以及检索增强生成(RAG)方法。[4][13][16][17][19][22] - 训练了GPT-3.5-Turbo、Phind-Codellama-34b-v2和DeepSeek-Coder-33b-Instruct的定制版本,以进一步提高测试用例生成质量。[43][44][45][46] - 手动分析了DeepSeek-Coder-33b-Instruct生成的测试用例,发现即使通过率最高的LLM,生成的测试用例也存在一些问题,需要人工评估和修正。[69][70][71][72][73][74][75] 根据论文内容,本文与编译器 (LLVM、GCC) 有以下关系: 1. OpenACC 是一种指令式并行编程模型,主要针对 x86 架构和加速器(如 GPU)。论文提到了几种支持 OpenACC 的开源编译器,包括 GCC、LLVM/Clacc 以及一些商业编译器如 HPE Cray 和 NVIDIA 编译器。 2. 论文的目标是自动生成 OpenACC 编译器实现的验证和测试用例。这些测试用例可用于检查 GCC、LLVM/Clacc 等编译器是否正确实现了 OpenACC 规范。 3. 论文探索使用大型语言模型(LLM)来自动生成这些验证测试用例,以补充手工编写测试用例的工作。这对于提高编译器实现的可靠性和正确性很有帮助。 4. 虽然论文聚焦于 OpenACC,但作者提到这种方法也可以应用于 OpenMP 等其他并行编程模型的编译器验证。 总之,本文与编译器实现的正确性和可靠性密切相关,旨在利用 LLM 技术来辅助编译器的验证和测试工作,从而提高编译器(如 LLVM、GCC)对并行编程模型的支持质量。 # 流水线 ## 2023年华为毕昇杯技术培训会 | 第二场(2):编译与CI构建,https://www.bilibili.com/video/BV1K14y1X7eu/ ## 2023年华为毕昇杯技术培训会 | 第八场(2):浅谈编译器通用测试方法,https://www.bilibili.com/video/BV1Lk4y1V7Je