如何在没有 Visual Studio 的 Windows 上的 cmd 中编译和运行 C/C++ MPI 代码

SHA*_*AIN 5 c c++ parallel-processing ms-mpi

我安装 MS-MPI

我喜欢用 Sublime Text 编写代码,特别是 C/C++

我使用 gcc/g++ 在 cmd 中运行代码

我怎样才能编译并运行从 cmd 编译并运行 MPI 代码

我不喜欢视觉工作室

那么,有什么方法可以在 cmd 中使用 MS-MPI 编译和运行我的 C/C++ MPI 代码

我知道标题中有一个问题: Compile C++ MPI Code on Windows

但没有明确的答案或评论。这就是为什么我现在重新问

小智 3

1.下载MS-MPI SDK和Redist安装程序并安装。下载链接可以在我们的主页找到https://msdn.microsoft.com/en-us/library/bb524831.aspx

\n\n

2.安装后,您可以验证是否已设置 MS-MPI 环境变量(您将希望在 Visual Studio 中使用这些环境变量)\n3.打开 Visual Studio 并创建一个新的 Visual C++ Win32 控制台应用程序项目。让\xe2\x80\x99s 将其命名为MPIHelloWorld 并使用默认设置。

\n\n

4.设置包含目录,以便编译器可以找到MS-MPI 头文件。请注意,我们将构建 64 位,因此我们将包含目录指向 $(MSMPI_INC);$(MSMPI_INC)\\x64。如果您要构建 32 位,请使用 $(MSMPI_INC);$(MSMPI_INC)\\x86

\n\n

5.设置链接器库(请注意,我将 msmpi.lib 添加到附加依赖项,并将 $(MSMPI_LIB64) 添加到附加库目录)。请注意,我们将构建 64 位,因此我们将附加库目录指向 $(MSMPI_LIB64)。如果您要构建 32 位,请使用 $(MSMPI_LIB32)如果您看到下面的这些错误消息,则很可能您正在构建 32 位,但指定了 64 位链接库。

\n\n

LNK1120: 5 个未解析的外部\nLNK2019: 函数 _main 中引用的未解析的外部符号 _MPI_Comm_rank@8\nLNK2019: 函数 _main 中引用的未解析的外部符号 _MPI_Finalize@0\nLNK2019: 函数 _main 中引用的未解析的外部符号 _MPI_Init@8\nLNK2019: 未解析外部符号函数_main\nLNK2019中引用的_MPI_Recv@28:函数_main\n中引用的未解析的外部符号_MPI_Send@24。编码并构建一个简单的Hello World程序\n7.在命令行上测试运行该程序\n8.我建议我使用HPC Pack 用于跨机器运行 MPI。但是,您仍然可以在没有 HPC Pack 的情况下跨不同计算机运行作业,其中您需要在所有计算机上安装 MS-MPI,并使用命令 smpd \xe2\x80\x93d 在每台计算机上启动 SMPD 守护程序。确保为您的应用程序添加必要的防火墙规则。要启动具有 2 个进程(1 个在 hostA 上,1 个在 hostB 上)的 MPIHelloWorld.exe 应用程序,可以使用以下命令\nmpiexec -hosts 2 hostA 1 hostB 1 -wdir \\hostA\\c$\\SomeDirectory MPIHelloWorld.exe

\n\n

或者,您可以使用命令行来编译和链接您的程序(替换上面的步骤 1-6)。请注意,我已将 \xe2\x80\x9cC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin\\amd64\xe2\x80\x9d 添加到我的路径环境变量中,以便 cl.exe和 link.exe 可用。

\n\n

要将程序编译为 .obj 文件: \ncl /I"C:\\Program Files (x86)\\Microsoft SDKs\\MPI\\Include" /I"C:\\Program Files (x86)\\Microsoft SDKs \\MPI\\包含\\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

\n\n

链接 .obj 文件:\nlink /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

\n