Qt工程使用OpenMP进行并行计算

一、说明

OpenMP 是一套支持跨平台的共享内存方式的多线程并发的编程 API。可以理解为,OpenMP 就是一套可以插入在代码中的工具,我们利用这些工具来实现一些多线程相关的功能。OpenMP是使用CPU进行并行计算,在实际项目中处理耗时的for循环等,简单有效,本文记录下使用Qt \C++项目开发时如何配置openMP。

二、工程配置

1.Qt Creator pro工程

区分编译器,配置pro文件

MSVC编译器:

QMAKE_CXXFLAGS += -openmp

QMAKE_LFLAGS += -openmp

GCC编译器:

QMAKE_CXXFLAGS += -fopenmp

QMAKE_LFLAGS += -fopenmp

考虑兼容性、可以这样写,在linux下也就可用了:

msvc {

    QMAKE_LFLAGS +=  -openmp

    QMAKE_CFLAGS += -openmp        # c语言项目

    QMAKE_CXXFLAGS += -openmp      # c++ 项目

} else {

    QMAKE_LFLAGS   +=  -fopenmp

    QMAKE_CFLAGS   +=  -fopenmp

    QMAKE_CXXFLAGS +=  -fopenmp

}

2.Qt Creator CMake工程

代码如下(示例):

find_package(OpenMP)

if(OpenMP_CXX_FOUND)

    target_link_libraries(HLPC PUBLIC OpenMP::OpenMP_CXX)

    message( "fine openmp")

endif()

三、代码示例

在自己的工程里补充如下代码就可以了

#include"omp.h"   //必须include这个头文件

#pragma omp parallel for 

    for (int i=0; i<=10; i++)

        qDebug() <<"index:"<< i <<", threadnum:"<<omp_get_thread_num();  //输出,并打印当前的线程号

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值