You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPICH4.1在Ubuntu下指定36核运行WRF却串行执行的问题求助

WRF并行运行异常及MPICH GPU初始化报错的可能原因

我在Ubuntu机器上使用GNU编译器安装了MPICH4.1,最初能成功用mpirun在36核上运行WRF作业,但现在执行相同作业时仅以单核心串行运行。

执行命令mpirun -np 36 ./wrf.exe的输出为:

starting wrf task            0  of            1
 starting wrf task            0  of            1
 starting wrf task            0  of            1
 starting wrf task            0  of            1
 starting wrf task            0  of            1
 starting wrf task            0  of            1

执行mpivars时出现如下错误:

Abort(470406415): Fatal error in internal_Init_thread: Other MPI error, error stack:
internal_Init_thread(67): MPI_Init_thread(argc=0x7fff8044f34c, argv=0x7fff8044f340, required=0, provided=0x7fff8044f350) failed
MPII_Init_thread(222)...:  gpu_init failed

机器并未配备GPU,mpi version输出为:

HYDRA build details:
    Version:                                 4.1
    Release Date:                            Fri Jan 27 13:54:44 CST 2023
    CC:                              gcc      
    Configure options:                       '--disable-option-checking' '--prefix=/home/MODULES' '--cache-file=/dev/null' '--srcdir=.' 'CC=gcc' 'CFLAGS= -O2' 'LDFLAGS=' 'LIBS=' 'CPPFLAGS= -DNETMOD_INLINE=__netmod_inline_ofi__ -I/home/MODULES/mpich-4.1/src/mpl/include -I/home/MODULES/mpich-4.1/modules/json-c -D_REENTRANT -I/home/MODULES/mpich-4.1/src/mpi/romio/include -I/home/MODULES/mpich-4.1/src/pmi/include -I/home/MODULES/mpich-4.1/modules/yaksa/src/frontend/include -I/home/MODULES/mpich-4.1/modules/libfabric/include'
    Process Manager:                         pmi
    Launchers available:                     ssh rsh fork slurm ll lsf sge manual persist
    Topology libraries available:            hwloc
    Resource management kernels available:   user slurm ll lsf sge pbs cobalt
    Demux engines available:                 poll select

可能的原因分析

  • MPI环境变量触发不必要的GPU检测
    尽管机器无GPU,MPICH仍可能因环境变量异常尝试初始化GPU:

    • 检查CUDA_VISIBLE_DEVICES环境变量,若该变量被错误设置(比如有非空值),执行unset CUDA_VISIBLE_DEVICES清空后重试;
    • MPICH4.1默认会自动检测GPU硬件,可通过设置export MPICH_GPU_SUPPORT_ENABLED=0禁用GPU支持,再运行WRF测试。
  • WRF的MPI链接配置损坏
    系统更新、环境变量变更可能导致WRF运行时无法正确关联MPICH的MPI库,每个进程独立以串行模式启动:

    • 检查WRF编译日志,确认编译阶段确实链接了MPICH的MPI库;
    • 重新编译WRF,确保编译时的MPI环境(PATH、LD_LIBRARY_PATH等)与当前运行时一致。
  • MPICH进程管理器配置异常
    从版本信息看,MPICH使用pmi进程管理器,若该组件配置出错,会导致mpirun无法协调多进程:

    • 尝试指定fork进程管理器运行:mpirun -np 36 --mca pmix_fork 1 ./wrf.exe;
    • 检查PMI_RANK等pmi相关环境变量,若存在错误设置则清空。
  • 系统资源限制或进程绑定错误
    系统CPU核心限制、MPICH进程绑定配置异常,会导致多进程无法分配到不同核心,表现为串行运行:

    • 用taskset -c -p <WRF进程PID>查看进程的CPU绑定情况;
    • 在mpirun命令中添加--bind-to none参数禁用进程绑定,再测试运行。
  • MPICH安装文件损坏
    磁盘问题、误操作可能导致MPICH安装文件损坏,引发运行时功能异常:

    • 重新安装MPICH,确保安装过程无报错;
    • 安装后确认PATH和LD_LIBRARY_PATH正确指向MPICH的bin和lib目录。

内容的提问来源于stack exchange,提问作者Ajay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:50:22