GPU到CPU的高性能转译:使用高级并行结构的自动优化

1 下载量 129 浏览量 更新于2024-06-21 收藏 12.83MB PDF 举报
"这篇论文探讨了通过高级并行结构实现GPU到CPU的高性能转译和优化,主要涉及Polygeist、MLIR和CUDA技术,并提到了屏障同步的概念。研究旨在解决随着硬件架构和编程模型变化导致的昂贵应用程序重构问题,提出了自动化跨模型编译的方法,以提高性能可移植性。" 在当前的高性能计算领域,尽管并行性是提升系统性能的关键,但是随着新硬件的不断推出,架构实现和编程模型也持续演进,这经常需要开发者对应用程序进行耗时的重构工作。为了解决这个问题,研究人员提出了一种新的策略,该策略基于Polygeist和MLIR框架,能够自动将使用CUDA编程模型的程序转换为适应CPU线程的模型。这个方法的核心在于一种并行结构的表示方式,它允许传统的编译器转换在不修改源代码的情况下进行,并且支持针对并行性的特定优化。 MLIR(多级中间表示)是这个转换过程中的关键组件,它提供了一个层次化的编译器基础设施,允许在不同的抽象级别上进行分析和优化。Polygeist则是一个高级并行语言,它能够表达多种并行编程模型,包括CUDA。通过这两个工具的结合,可以实现CUDA代码到CPU的无缝迁移。 为了验证这种方法的有效性,研究团队对CUDA的Rodinia基准测试套件进行了跨编译和优化,在多核CPU上获得了58%的几何平均加速比,甚至超过了手动编写的OpenMP代码。此外,他们还展示了一个实际应用案例,即在没有用户干预的情况下,成功地在Fugaku——一个仅包含CPU的超级计算机上高效运行和扩展了PyTorch的CUDA内核,且性能比PyTorch的CPU本地后端提高了2.7倍。 论文的关键词包括Polygeist、MLIR、CUDA和屏障同步,表明这些技术在并行计算模型和编译器设计中的重要性。屏障同步是一种同步机制,用于确保并行任务在继续执行之前都到达预定的同步点,这对于在多核CPU上正确管理和优化并行代码至关重要。 这项工作为高性能计算领域的程序移植性和优化提供了新的视角,通过自动化工具减轻了开发者的工作负担,同时提高了代码在不同平台上的执行效率。这种技术的发展对于未来异构计算环境中的软件可移植性和性能优化具有重要意义。