2014-10-28 93 views
0

我也跟着下面的教程上的代碼塊MPI_Comm_size總是在代碼塊返回1

執行MPI

Tutorial for installing MPI on Code blocks

如果我執行簡單的MPI代碼的教程來了,我總能得到1 MPI_Comm_size。 如何從下面的代碼獲取更多線程?

#include <iostream> 
#include "mpi.h" 
#include <string> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 

    int my_rank;  /* rank of process */ 
    int noProcesses; /* number of processes */ 
    int nameSize;  /* length of name */ 

    char computerName[MPI_MAX_PROCESSOR_NAME]; 

    MPI_Init(&argc, &argv); /*START MPI */ 

    /*Determines the size of the group associated with a communicator */ 
    MPI_Comm_size(MPI_COMM_WORLD, &noProcesses); 

    /*Determines the rank of the calling process in the communicator*/ 
    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); 

    /*Gets the name of the processor*/ 
    MPI_Get_processor_name(computerName, &nameSize); 

    printf("Hello from process %d of %d processor on %s\n", my_rank, noProcesses, computerName); 

    MPI_Finalize(); /* EXIT MPI */ 

    return 0; 
} 

我已經試過在相應位置的cmd提示符mpiexec -n 2 file.exe

但我得到一個錯誤信息Can't find ~~ __gxx_personality_v0 ~~~ DLL libstdc++-6.dll ~~~.


我通過重命名等mpiexec.exe文件解決。在我的情況下,它是在C:\ Program Files \ Microsoft MPI \ Bin。

+0

請將您的解決方案轉換爲答案。之後你甚至可以接受。 – niklasfi 2014-10-29 07:00:31

回答

0

該問題是由系統路徑中的另一個mpiexec.exe引起的。因此我在前面寫了特定的完整路徑,例如:「C:\ Program Files \ MPICH2 \ bin \ mpiexec.exe」。

之後,將「C:\ Program Files \ Microsoft MPI \ Bin」中的另一個mpiexec.exe文件重命名爲「C:\ Program Files \ Microsoft MPI_temp \ Bin」。

但是,在重命名「smpd version mismatch」之後,會出現另一個錯誤。所以我通過smpd -version檢查了它的版本。它是「1.0.3」。所以我只需通過「smpd.exe -install」命令重新安裝smpd。