MPI意外输出

我正在阅读和练习教程中的MPI程序。 在那里,我看到了一个寻找流程等级的例子。 但同样的例子是在我的机器上给出不同的输出(Ubuntu 10.04)..这是程序

#include  #include  main(int argc, char **argv) { int ierr, num_procs, my_id; ierr = MPI_Init(&argc, &argv); /* find out MY process ID, and how many processes were started. */ ierr = MPI_Comm_rank(MPI_COMM_WORLD, &my_id); ierr = MPI_Comm_size(MPI_COMM_WORLD, &num_procs); printf("Hello world! I'm process %i out of %i processes\n", my_id, num_procs); ierr = MPI_Finalize(); } 

根据教程的预期输出是

预期产出:

 Hello world! I'm process 0 out of 4 processes. Hello world! I'm process 2 out of 4 processes. Hello world! I'm process 1 out of 4 processes. Hello world! I'm process 3 out of 4 processes. 

我得到的输出

 Hello world! I'm process 0 out of 1 processes Hello world! I'm process 0 out of 1 processes Hello world! I'm process 0 out of 1 processes Hello world! I'm process 0 out of 1 processes 

我的机器使用的是intel i3,戴尔Inspiron,并且正在使用Ubuntu 10.04操作系统。请帮助我解决问题。

我刚刚在我的Ubuntu上编译并运行你的程序:

 tom@tom-ThinkPad-T500:~/MPI_projects/Start/net2/net2/bin/Debug$ mpirun -n 6 ./output Hello world! I'm process 3 out of 6 processes Hello world! I'm process 4 out of 6 processes Hello world! I'm process 0 out of 6 processes Hello world! I'm process 2 out of 6 processes Hello world! I'm process 1 out of 6 processes Hello world! I'm process 5 out of 6 processes 

输入包含可执行文件的文件夹并运行:

mpirun -np 2 ./output

要么

mpirun -np 6 ./output

标志-np修改被调用进程的数量( http://linux.die.net/man/1/mpirun )。

你也可以在没有任何标志的情况下运行mpirun来显示许多有用的信息。

另一个有趣的命令是mpirun -info ,它将显示打印MPI构建信息。

这是我输出的第一部分:

 tom@tom-ThinkPad-T500:~/MPI_projects/Start/net2/net2/bin/Debug$ mpirun -info HYDRA build details: Version: 1.4.1 Release Date: Wed Aug 24 14:40:04 CDT 2011 

最后一种方法是使用以下命令重新安装或更新MPI: sudo apt-get install libcr-dev mpich2 mpich2-doc