mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1794 words
5 minutes
ParaSeis 软件的移植与优化实践
2025-01-04
YRemmmm
/
ParaSeis-ASC24
Waiting for api.github.com...
00K
0K
0K
Waiting...

一、项目背景#

本项目源自 ASC24 世界大学生超级计算机竞赛的超级团队赛赛题,核心任务是针对 ParaSeis 这一地震波传播模拟软件进行移植与优化。ParaSeis 被广泛用于研究地震波在地球内部复杂介质中的传播规律,其计算规模大、并行通信密集,对高性能计算平台的优化潜力非常可观。

在本次工作中,我主要负责:

  • 在本地集群上配置应用所需的全部依赖库环境;
  • 使用 Intel Fortran 编译器 ifx 完成项目编译,并修复因编译器严格性带来的隐式函数声明问题;
  • 优化通信流程,减少 MPI 空转与互斥锁开销;
  • 优化冗余文件读操作,降低 I/O 对整体运行时间的干扰。

最终,在初始算例上,相较于官方提供的 Baseline,我们达到了 平均 3 倍的加速比,为后续大规模地震模拟提供了更高效的计算支撑。

二、优化思路与整体框架#

ParaSeis 作为一套成熟的地震模拟代码,原始版本在编译器选择、数值库版本以及并行通信模式上均存在与现代 HPC 环境不太匹配的地方。我们的优化工作围绕四个核心方向展开:

  1. 工具链现代化:用 Intel LLVM 编译器(icx/ifx)替换传统的 GCC/GFortran,充分利用现代 CPU 的自动向量化与优化能力。
  2. 关键依赖库升级:将 SuperLU-DIST 从 2.0 升级至 8.2,引入高性能 BLAS 库(OpenBLAS),提升稀疏线性求解器效率。
  3. 并行性能优化:通过 Profiling 定位 MPI spin & mutex 热点,优化通信模式,同时减少冗余文件读写。
  4. 构建流程自动化:编写一体化编译‑安装‑测试脚本,统一流程,便于复现与迭代。

三、主要优化任务与挑战#

1. 编译器迁移:从 GCC 到 Intel LLVM#

工作内容
将项目中所有编译器相关变量从 gccgfortranmpicc 等替换为 icxifxmpiicxmpiifx。迁移过程中遇到的主要障碍是代码中存在大量 C90 风格的隐式函数声明,在新编译器下会报错。我们逐一将这些隐式调用改为显式声明,其中对于 GKfree 等内存释放函数,最终选择改为手动释放内存,以避免复杂的声明适配。

成果
编译器替换基本完成,全量编译通过,为后续性能优化奠定了工具链基础。

2. 数值库升级:SuperLU-DIST 与 BLAS#

SuperLU-DIST:2.0 → 8.2#

SuperLU-DIST 是 ParaSeis 中稀疏线性方程组求解的核心。新版(8.2)在算法效率、GPU 支持以及并行可扩展性上均有显著提升。我们成功编译了 SuperLU-DIST 8.2,并启用了 CUDA 支持,同时将其与 ParMETIS 链接,保持原有的并行图划分能力。
挑战:新版与 2.0 版本的接口差异较大,部分目标文件名称发生变化,某些函数调用方式不兼容,需要修改调用代码以适配新版 API。

BLAS 库替换:CBLAS → OpenBLAS#

原版使用的 CBLAS 性能较为一般,我们选择了 OpenBLAS 作为替代,并成功将其链接到 SuperLU-DIST 8.2 以及 ParaSeis 主程序中。后续将进一步测试 Intel MKL 等不同 BLAS 实现,选取最优方案。

3. 通信优化与文件 I/O 精简#

通过 Intel Vtune 对程序进行初步性能剖析,我们发现:

  • MPI 通信中存在较多的 spin 与 mutex 开销,表明同步模式存在优化空间;
  • 存在冗余的文件读操作,增加了不必要的 I/O 时间。

针对这些问题,我们调整了通信粒度,尝试重叠计算与通信,并合并了部分冗余文件读取,有效降低了通信等待时间和 I/O 开销。

4. METIS 相关更新#

METIS 与 ParMETIS 在 ParaSeis 中主要用于网格划分与负载均衡。我们对 metis.src 进行了初步更新,更新后的版本能够正常运行。但在梳理代码过程中发现,现有代码中并未明显看到对 ParMETIS 的调用,推测其可能仅用于预处理阶段的网格生成,后续需要理清 METIS 在 ParaSeis 中的完整作用范围,再针对性地调整接口调用。

5. 构建流程自动化#

为提高开发效率和可复现性,我们将原有的 csh 脚本迁移到 bash,并正在编写一套涵盖编译、安装、测试的一体化脚本。测试部分能够自动运行标准算例并与基准结果进行对比,帮助快速发现优化过程中引入的回归问题。

四、最终成果与加速效果#

经过上述一系列优化,我们在初始算例上对优化后的 ParaSeis 与官方 Baseline 进行了对比测试。结果显示,在相同的硬件环境和输入规模下,优化版本的平均运行时间缩短为原来的 1/3,即达到 平均 3 倍的加速比

具体贡献包括:

  • 通过编译器升级与隐式声明修正,确保了代码在现代编译器下的正确性与性能;
  • 通过 SuperLU-DIST 与 OpenBLAS 的升级,显著提升了稀疏线性求解部分的计算效率;
  • 通过 MPI 通信优化与 I/O 精简,降低了并行开销,提高了大规模并行的可扩展性。

五、总结与展望#

ParaSeis 的移植与优化是一项涵盖工具链、数值库、并行算法以及工程化建设的系统性工作。在 2024 年下半年的集中攻关中,我们成功将这一地震模拟软件的性能提升了 3 倍,为 ASC24 竞赛提供了坚实的技术支撑,也为后续更复杂的地震波模拟应用积累了宝贵的优化经验。

后续工作将继续在以下几个方向深化:

  1. 完成 SuperLU-DIST 8.2 的全面接口适配;
  2. 引入更多 BLAS 实现并对比性能;
  3. 基于更精细的 Profiling 结果,深入优化通信模式与计算热点;
  4. 完善一体化脚本,实现一键构建与性能回归测试。

地震波模拟是地球科学领域的重要工具,其性能提升直接关系到科学计算的效率与精度。希望我们的实践经验能够为从事类似应用优化的同行提供一些参考与启发。

Share

If this article helped you, please share it with others!

ParaSeis 软件的移植与优化实践
https://blog.yremmmm.com/posts/paraseis/
Author
why?
Published at
2025-01-04
License
CC BY-NC-SA 4.0

Some information may be outdated

Table of Contents