基于PARAMESH的Fortran CFD并行程序OpenMPI异常排查求助
并行CFD程序(基于PARAMESH+MPI)随进程数变化的多类异常排查
我是机械工程从业者,正在基于PARAMESH(集成MPI调用的Fortran并行数据与负载分配库)开发CFD仿真程序。程序在并行运行时出现数据传输错误或各类终止异常,且错误的位置与类型随进程数N变化:
- N=1:无任何异常;
- N=2:程序正常终止,但结果数组数据无效,进程0的数据未正确传输至进程1;
- N=4:执行Fortran
allocate语句时触发malloc()无效大小错误,收到SIGABRT信号; - N=6:执行Fortran
deallocate语句时触发段错误(SIGSEGV); - N=8/10/12/14/16/32:执行
MPI_ALLTOALL时出现free()无效大小、段错误、malloc()缓存块未对齐等多种错误,且commatrix_send变量状态异常。
运行环境:
- CPU:AMD Ryzen 9 7950X
- 内存:64GB
- 系统:Ubuntu 22.04.3 LTS
- MPI库:OpenMPI 4.1.5
- 编译器:GCC 11.4.0
已提供OpenMPI配置、编译器选项,以及PARAMESH中REAL类型设置和数据重分布的代码片段,请求排查问题根源。
内容的提问来源于stack exchange,提问作者Andris R.
相关产品推荐
相关产品推荐

