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

标签 c++ c parallel-processing ms-mpi

我安装 MS-MPI

我特别喜欢用 sublime text 编写代码,特别是 C/C++

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

如何从 cmd 编译和运行 MPI 代码

我不喜欢visual studio

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

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

但没有明确的答案或评论。这就是我现在重新提问的原因

最佳答案

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 个 Unresolved external 问题 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 守护程序。确保为您的应用程序添加必要的防火墙规则。要使用 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

关于c++ - 如何在没有 Visual Studio 的情况下在 Windows 上的 cmd 中编译和运行 C/C++ MPI 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50195657/

相关文章:

c++ - 加载 Rcpp 并运行示例代码

c - setcontext() 段错误

c - 为什么我在第二次搜索文件时收到段错误错误?

c# - 另一个C#死锁调试问题

haskell - Haskell parMap 中的共享变量

azure - 分布式计算/横向扩展模式的良好资源

c++ - 在 Linux 上构建 boost

c++ - 媒体基础多音频流文件解码错误

c++ - 这个模板元编程片段到底发生了什么?

C 程序无法正常工作(集合、数组、循环)