2013-02-26 134 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