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

MPI_Bcast代码执行报execvp错误,求排查及解决方法

问题解答

1. 代码是否正确?

你的MPI_Bcast代码逻辑上是正确的,但存在一个小的输出格式问题:

  • printf中的换行符写成了/n,应该改为\n,否则无法正常换行输出。
  • 核心逻辑:根进程(rank=0)初始化data=10,通过MPI_Bcast将数据广播到所有进程,非根进程接收数据,这个流程完全符合MPI_Bcast的使用规范。

修正后的代码(仅修正换行符):

#include <iostream>
#include <mpi.h>
using namespace std;

int main(int argc, char* argv[])
{
    int rank;
    int data=0;

    MPI_Init(&argc,&argv);

    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    // 根进程初始化数据
    if (rank == 0){
        data = 10;
    }
    printf("\nbefore bcast data in Process %d : %d", rank, data);

    MPI_Bcast(&data, 1, MPI_INT, 0, MPI_COMM_WORLD);

    printf("\nafter bcast data in Process %d : %d", rank, data);

    MPI_Finalize();
    return 0;
}

2. 如何得到预期运行结果?

你遇到的错误execvp error on file ./Fan是因为MPI运行时找不到指定的可执行文件,和代码本身无关,按以下步骤操作即可解决:

步骤1:编译MPI代码

使用MPI官方提供的C++编译器编译代码(比如mpicxx或mpiCC,具体取决于你的MPI实现):

mpicxx your_code.cpp -o mpi_bcast_demo

将your_code.cpp替换为你实际的代码文件名,mpi_bcast_demo是生成的可执行文件名称,可自定义。

步骤2:运行MPI程序

用mpirun或mpiexec启动程序,同时指定进程数(示例为启动4个进程):

mpirun -np 4 ./mpi_bcast_demo

如果是集群环境,需结合集群调度系统(如Slurm)提交任务,示例命令:

srun -n 4 ./mpi_bcast_demo

预期输出示例

运行后会得到类似如下的输出(进程输出顺序可能随机):

before bcast data in Process 0 : 10
before bcast data in Process 1 : 0
before bcast data in Process 2 : 0
before bcast data in Process 3 : 0
after bcast data in Process 0 : 10
after bcast data in Process 1 : 10
after bcast data in Process 2 : 10
after bcast data in Process 3 : 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:15:54