一、说明
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(); //输出,并打印当前的线程号 |
运行结果如下: