目录
- 前言
- 一、下载并安装MPI
- 二、配置Visual Studio 2019
- 三、编写代码并运行
- (1)代码
- (2)使用VS直接运行MPI程序
前言
大三上的时候学校里开了一门并行计算的基础课,学到了挺多东西,当时写了挺多文档,但都是word版本的。最近时间充裕,打算修改一下发到博客上帮助更多的人。欢迎留言讨论,有瑕疵还望见谅!
一、下载并安装MPI
最新的MPI已经由微软进行托管,网址如下:
进入后选择自己对应的操作系统,本文以Windows10为例。点击http进入。
找到Downloads部分,选择最新的下载即可。
将两个都勾选上,进行下载。
下载后得到两个文件,分别进行安装即可,我将其装在了D盘。安装完成后,得到两个文件夹,如下。
MSMPI已经帮助我们配置好了Path变量,我们无需手动进行配置。接下来,可以验证一下安装是否成功。
Win+R调出cmd,输入指令set MSMPI,如果出现类似如上图的地址,就表示安装已经成功。
二、配置Visual Studio 2019
接下来,我们需要配置Visual Studio 2019。首先,打开VS,选择创建新项目-控制台应用,创建在方便找到的位置即可。
创建成功后,会显示一个带有简易的C++程序的完整项目,在右侧的解决方案资源管理器中的对应项目名处右键,选择属性。
之后要进行以下操作:
- 在跳出来的页面中选择配置管理器,选择平台为x64
- 选择C/C++→预处理器→“编辑”,添加:MPICH_SKIP_MPICXX。当然,你也可以直接添加,但别忘了分号。
- C/C++ →代码生成→运行库,选择:多线程调试(/MTd)
- 链接器→输入→附加依赖项,添加:msmpi.lib
- VC++目录→包含目录,添加:$(MPI安装位置)\Microsoft SDKs\MPI\Include;
- VC++目录→库目录添加:$(MPI安装位置)\Microsoft SDKs\MPI\Lib\x64;
其中,$(MPI安装位置)为你安装MPI的位置,如:D:\Software
等配置好之后,程序就可以编译成功了。
如果程序中出现红线,可能原因有以下几个:
- 你的平台选择错误,请选择你按照上述步骤更改后的平台;
- 上述步骤有误,重新配置;
- MPI安装错误,重新安装。
那么,是不是我们每次配置好一个新程序都需要重新配置呢?并不是这样。打开你的工程目录,找到两个.vcxproj文件,这两个文件决定了你的配置,所以,只需要在你创建新项目之后,将这两个文件替换了(记得改名成对应工程名),即可免去繁复的手工配置过程。
三、编写代码并运行
(1)代码
接下来,编写一个Hello World程序,并按F5进行编译运行。程序如下。
#include <stdio.h>
#include <mpi.h>
int main(int argc, char* argv[])
{
int myid, numprocs, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name(processor_name, &namelen);
if (myid == 0)
{
printf("number of processes: %d\n", numprocs);
}
printf("%s: Hello world from process %d \n", processor_name, myid);
MPI_Finalize();
return 0;
}
(2)使用VS直接运行MPI程序
当你的代码可以编译运行的时候,你有两种选择:控制台执行或者VS直接执行。网上大多数都介绍了如何用控制台进行执行,即:调出cmd,cd到程序所在目录下(往往是你项目所在的文件夹中的Debug文件夹中),执行mpiexec指令,如上图所示。
但这样有点儿麻烦。我在此介绍一种用VS即可运行的方式。如果你直接按F5,往往只能默认单进程运行,如下所示:
这时,需要为它的执行添加一些参数即可解决问题。打开项目的属性页-调试,更改命令和命令参数如下。
- 命令是需要执行的进程,为你安装MPI的位置中mpiexec.exe文件的位置
- 命令参数为执行这个程序所需要的参数
- -n 8是我选择的进程数
- $(TargetPath) 即为编写的cpp程序的位置。
这样,再按F5执行,即可在VS中直接按照多进程程序运行。执行结果如下: