1.下载MS-MPI SDK和Redist安装程序并进行安装。下载链接可以在我们的主页找到
https://msdn.microsoft.com/zh-cn/library/bb524831.aspx
2.安装完成后,您可以验证是否已设置了MS-MPI环境变量(您将希望在Visual Studio中使用这些env vars)。
3.打开Visual Studio并创建一个新的Visual C++ Win32 Console Application项目。让我们将其命名为MPIHelloWorld并使用默认设置。
4.设置包含目录,以便编译器可以找到MS-MPI头文件。请注意,我们将构建64位版本,因此将包含目录指向$(MSMPI_INC);$(MSMPI_INC)\x64。如果您将构建32位版本,请使用$(MSMPI_INC);$(MSMPI_INC)\x86。
5.设置链接器lib(请注意,我将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.在命令行上测试运行程序。
8.我建议使用HPC Pack在多台机器上运行MPI。但是,您仍然可以在不使用HPC Pack的情况下在不同的机器上运行作业,在这种情况下,您需要在每台机器上安装MS-MPI,并使用命令smpd -d在每台机器上启动SMPD守护程序。确保为您的应用程序添加必要的防火墙规则。要在hostA上运行1个进程,在hostB上运行1个进程的MPIHelloWorld.exe应用程序,您可以使用以下命令:
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文件:
link /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