如何在Windows命令提示符中编译和运行C/C++ MPI代码而无需使用Visual Studio

5

我安装了MS-MPI

我喜欢使用sublime text编写C/C++代码

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

请问如何在cmd中编译和运行MPI代码

我不喜欢visual studio

因此,是否有办法让我在cmd中使用MS-MPI编译和运行我的C/C++ MPI代码

我知道标题上有一个问题:在Windows上编译C++ MPI代码

但是没有明确的答案或评论。这就是为什么我现在再次提问的原因


嗨!你找到解决方法了吗?我知道这是一段时间以前的事情,但我一直在问自己同样的问题。 - Barnercart
1
据我所记,后来我使用了Ubuntu。 - SHAH MD IMRAN HOSSAIN
2个回答

3
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

0

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

然而,请注意,C++是一种难以为编译器正确处理的语言,并且默认警告级别相当宽松。因此,它经常容忍不良/错误的代码。始终建议在其他编译器上检查代码,至少在严格模式下使用高警告级别的g++。

此外,鼓励在Visual Studio中将警告级别设置得更高。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接