1.下载 MS-MPI SDK 和 Redist 安装程序并安装它们。下载链接在我们的主页https://msdn.microsoft.com/en-us/library/bb524831.aspx
2.安装后,您可以验证是否已设置 MS-MPI 环境变量(您将希望在 Visual Studio 中使用这些环境变量)
3.打开 Visual Studio 并创建一个新的 Visual C++ Win32 控制台应用程序项目。我们将其命名为 MPIHelloWorld 并使用默认设置。
4.设置包含目录,以便编译器可以找到 MS-MPI 头文件。请注意,我们将构建 64 位,因此我们将包含目录指向 $(MSMPI_INC);$(MSMPI_INC)\x64。如果您要构建 32 位,请使用 $(MSMPI_INC);$(MSMPI_INC)\x86
5.设置链接器库(请注意,我将 msmpi.lib 添加到附加依赖项,并将 $(MSMPI_LIB64) 添加到附加库目录)。请注意,我们将构建 64 位,因此我们将附加库目录指向 $(MSMPI_LIB64)。如果您将构建 32 位,请使用 $(MSMPI_LIB32)如果您在下面看到这些错误消息,则很可能您正在构建 32 位但指定 64 位链接库。
LNK1120:5 个未解决的外部因素
LNK2019:函数 _main 中引用的未解析外部符号 _MPI_Comm_rank@8
LNK2019:函数 _main 中引用的未解析外部符号 _MPI_Finalize@0
LNK2019:函数 _main 中引用的未解析外部符号 _MPI_Init@8
LNK2019:函数 _main 中引用的未解析外部符号 _MPI_Recv@28
LNK2019:函数 _main 中引用的未解析外部符号 _MPI_Send@24
6.编写并构建一个简单的Hello World程序
7.Test在命令行运行程序
8.我建议我使用 HPC Pack 跨机器运行 MPI。但是,您仍然可以在没有 HPC Pack 的情况下跨不同机器运行作业,其中您需要在所有机器上安装 MS-MPI 并使用命令 smpd –d 在每台机器上启动 SMPD 守护程序。确保为您的应用程序添加必要的防火墙规则。要使用 2 个进程启动 MPIHelloWorld.exe 应用程序,1 个在 hostA 上,1 个在 hostB 上,您可以使用以下命令
mpiexec -hosts 2 hostA 1 hostB 1 -wdir \hostA\c$\SomeDirectory MPIHelloWorld.exe
或者,您可以使用命令行来编译和链接您的程序(替换上面的步骤 1-6)。请注意,我已将“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64”添加到我的路径环境变量中,以便 cl.exe 和 link.exe 可用。
要将您的程序编译成 .obj 文件:
cl /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include" /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include\x64" /I. /I"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include" /I"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include" /c MPIHelloWorld.cpp
链接 .obj 文件:
链接 /machine:x64 /out:MpiHelloWorld.exe /dynamicbase "msmpi.lib" /libpath:"C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64" /LIBPATH:"C:\Program Files ( x86)\Microsoft Visual Studio 12.0\VC\lib\amd64" /LIBPATH:"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64" MPIHelloWorld.obj