win下的Qt Creator如何在C++代码使用MPI 和 openMP

如题,我们希望在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

致谢

此处实名感谢师兄给师弟抱大腿!!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值