MPI_Comm_size始终在代码块上返回1

时间:2014-10-28 12:04:03

标签: c++ mpi

我按照以下教程在Codeblocks上执行mpi

Tutorial for installing MPI on Code blocks

如果我执行简单的MPI代码来自Tutorial,我总是得到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中。

1 个答案:

答案 0 :(得分:0)

问题是由系统路径中的另一个mpiexec.exe引起的。

所以我在前面写了特定的完整路径,例如:&#34; C:\ Program Files \ MPICH2 \ bin \ mpiexec.exe&#34;。

之后,在&#34; C:\ Program Files \ Microsoft MPI \ Bin&#34;中重命名另一个mpiexec.exe文件。到&#34; C:\ Program Files \ Microsoft MPI_temp \ Bin&#34;。

但是在重命名&#34; smpd版本不匹配&#34;后,它会出现另一个错误。所以我通过smpd -version检查了它的版本。它是&#34; 1.0.3&#34;。所以我只需通过&#34; smpd.exe -install&#34;重新安装smpd。命令。