MPI仅在Visual Studio调试部分进行编译



我有这个程序

#include <stdio.h>
#include <mpi.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int size;
int rank;
MPI_Init(NULL, NULL);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Hello, World!");
cout << MPI_Comm_rank << " " << MPI_Comm_size << endl;
MPI_Finalize();
return 0;
}

当我在Microsoft Visual Studio中调试它时,它运行得很好。但当我在命令提示符或任何终端中尝试时,我会收到这个错误,

Project_1.cpp:2:10: fatal error: mpi.h: No such file or directory
2 | #include <mpi.h>
|          ^~~~~~~
compilation terminated.

我已经安装了g++,它可以与其他程序配合使用。我也安装了MPI。能够将它链接到我的Microsoft Visual Studio,但它只能在调试部分工作。我在用一台windows电脑。真的不知道该怎么办。任何帮助都非常感谢。

您的程序有一些问题:

  • 您没有定义MPI_Comm_rankMPI_Comm_size,但您尝试在cout中打印它们。在下面的代码中,我重写了您的代码
#include <stdio.h>
#include <mpi.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int size;
int rank;
MPI_Init(NULL, NULL);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Hello, World!");
cout << rank << " " << size << endl;
MPI_Finalize();
return 0;
}
  • 您还需要通过以下方式将mpiexec.exe的位置添加到系统PATH中:

    1-打开Window’s System Properties对话框=>点击Environment Variables

    2-单击"路径"变量的edit=>添加C: Program FilesMicrosoft MPIBin (假设默认安装)

  • 包括适当的库。

    1-MPI代码应编译为控制台应用程序

    2-一旦你创建了项目,你需要添加适当的库

    • 右键单击Solution Explorer中的项目并转到Properties
    • 单击VC++ Directories并(假设MPI SDK安装在默认目录中)添加:
      • C:/ Program Files (x86)/Microsoft SDKs/Include到Include Directories
      • C:/Program Files (x86)/Microsoft SDKs/Lib/x64C:/Program Files (x86)/Microsoft SDKs/Lib/x86到图书馆目录
      • 取决于您希望将代码编译为32位还是64位

    3-单击链接器=>输入

    • 在"附加依赖项"下添加msmpi.lib

最新更新