【问题标题】:How to compile and run C/C++ MPI codes in cmd on windows without Visual Studio如何在没有 Visual Studio 的 Windows 上在 cmd 中编译和运行 C/C++ MPI 代码
【发布时间】:2018-05-06 02:09:18
【问题描述】:

我安装了 MS-MPI

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

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

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

我不喜欢视觉工作室

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

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

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

【问题讨论】:

  • 嗨!你找到方法了吗?我知道已经有一段时间了,但我一直在问自己同样的问题。
  • 我记得后来我用过 ubuntu

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    但我个人建议您使用 Visual Studio 进行编码,如果您使用 c/c++ 或任何其他语言进行编码,与其他语言相比,您将获得更多好处,而且我还想首先建议您,VS 2008 非常强大,可能用于 C++ 编程的最佳 IDE 之一(至少带有 Visual Assist X 等支持插件)。

    但是请注意,C++ 是一种很难让编译器正确使用的语言,并且默认警告级别对引导非常宽松。所以它会经常容忍坏/错误的代码。始终建议检查其他编译器上的代码——至少在严格模式下具有高警告级别的 g++ 中。

    还鼓励在 Visual Studio 中设置更高的警告级别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2011-06-29
      • 2019-04-26
      • 2020-04-02
      • 1970-01-01
      • 2016-10-20
      相关资源
      最近更新 更多