如题,我们希望在Windows下的Qt Creator中运行如下的一段并行代码:
#include <math.h>
#include "mpi.h"
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
/*myid 和 numprocs分别记录某一个并行执行进程的标识和所有参加计算的进程的个数*/
int myid, numprocs;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
cout<<"id="<<myid<<endl;
MPI_Finalize();
return 1;
}
安装win下的MPI
比较简单,进去这个链接
https://www.mpich.org/downloads/
->然后找到其中的Microsoft Windows的版本
-> [http]点进去
-> 找到MS-MPI Downloads 点击 MS-MPI v10.1.2 (new!) - see Release notes
->进入Microsoft Download Center
-> Download 进入页面如下:
把这两个下载下来,分别默认路径安装,我们就得到了
C:\Program Files (x86)\Microsoft SDKs\MPI
C:\Program Files\Microsoft MPI
两个文件夹,前者提供了一系列的头文件和动态库,后者提供了mpiexec.exe这个可执行文件。
OK!这就是MPI已经在Windows下面安装好了,比linux简单多了23333!
在Qt Creator中配置环境
首先,我们照常创建一个项目
文件(F) -> 新建文件或项目(N) -> Non-Qt Project -> Plain C++ Application -> 使用qmake创建,设置工程名字为mpitest其他默认设置。然后把代码粘进去,可以得到如下的情况:
之后首先配置编译器,使用之前的默认编译器即可。左下角未配置图标 -> 项目模式 -> 默认kits然后拖到右下角Configure Project。得到如下:
说明代码已经可以编译,但是现在编译器找不到mpi.h
的头文件,需要我们人为给定,进入mpitest.pro
文件,在里面添加如下两句话
INCLUDEPATH +="C:\Program Files (x86)\Microsoft SDKs\MPI\Include"
LIBS = -L "C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64" -lmsmpi
回到主程序,我们发现标记错误的地方消失了。
不过现在还不能运行,因为并行程序的运行需要使用前面提到的mpiexec.exe
。左侧项目,选择我们当前使用的编译器,Build
的部分不用修改,直接进入run
的部分
-> 运行设置中运行
选择Add..
,添加时选择[Custom Executable]
-> 然后在下面Executable中添加mpiexec.exe
-> Command line arguments 添加-np 4 mpitest
-> Working directory 中为C:\Users\ycwang\Desktop\build-mpitest-Desktop_Qt_5_14_2_MinGW_64_bit-Debug\debug
,这个是Build
中的构建目录中,再添加一个debug。或者可以先运行一下,让qt creator创建这个文件夹,再去直接选择。
-> 勾选Run in terminal
如下图
执行一下,输出如下结果:
成功!
openMP的并行
这个笔者比较经常用,网上也能搜索到很多资料,简单提一下。
和mpi
类似,不过openMP
在windows中本来就内置了,什么都不用安装,直接在mpitest.pro
中添加编译选项即可,需要添加如下两句:
QMAKE_CXXFLAGS+= -fopenmp
QMAKE_LFLAGS += -fopenmp
致谢
此处实名感谢师兄给师弟抱大腿!!!