2013-02-26 124 views
0

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

#include <stdio.h> 
#include <mpi.h> 
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 

我的妈妈中国采用英特尔i3,戴尔Inspiron和Ubuntu 10.04操作系统。帮助我解决问题。

+1

什么命令你使用运行你的应用程序? MPI应用程序通常使用'mpirun'或类似工具运行。 – 2013-02-26 17:27:57

+0

[MPI \ _Rank可能为所有进程返回相同的进程号](http://stackoverflow.com/questions/20287564/mp​​i-rank-return-same-process-number-for-all-process) – 2014-06-16 15:18:28

回答

0

我刚才编译并在我的Ubuntu运行您的程序:

[email protected]:~/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

国旗-n p修改调用进程的数量(http://linux.die.net/man/1/mpirun)。

您也可以在没有任何标志的情况下运行mpirun以显示大量有用的信息。

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

这是我输出的第一部分:

[email protected]:~/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