目录
1 在项目中找到property pages>>c/c++>>language>>openmp支持
2 在环境变量中增加“OMP_NUM_THREADS”变量,数值自己根据你的CPU的性能来设置,一般2、4、8等
3 在项目中输入如下代码,并编译运行
4 结果与不使用omp的程序比对
环境windows7 vs2008
1 在项目中找到property pages>>c/c++>>language>>openmp支持
设置为yes
2 在环境变量中增加“OMP_NUM_THREADS”变量,数值自己根据你的CPU的性能来设置,一般2、4、8等
有的博客主张设置omp_num_threads(初次使用Windows下的OpenMP_windows openmp-CSDN博客)。但多数博客认为这步可以省略。
3 在项目中输入如下代码,并编译运行
#include "omptest.h"
#include <QtGui/QApplication>
#include <omp.h>//包含头文件
#include <QTime>
#include <qmessagebox.h>
#define THREAD_COUNT 2
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
quint64 i64Sum = 0;
omp_set_num_threads(THREAD_COUNT);//指定并行线程数
QTime t;
t.start();
#pragma omp parallel for reduction(+: i64Sum)//多个线程同时访问i64Sum,可能导致资源冲突。所以要使用reduction
for(int i = 0; i < 1024 * 1024 * 512; i++)
{
i64Sum += (quint64)i;
}
QMessageBox msg;
msg.setText(QString("%1 %2").arg(i64Sum).arg(t.elapsed()));
msg.exec();
return a.exec();
}
4 结果与不使用omp的程序比对
使用 omp耗时627毫秒
不使用omp 耗时约为使用omp的两倍