昨天粗略地学习了OpenMP,并在VS2008环境下做了简单的试验,现将过程及细节记录如下。
1、在[项目]——[属性]——[C/C++]——[语言]设置:[OpenMP支持]——是。
2、试验代码如下:
#include "stdafx.h"
#include <time.h>
#include <Windows.h>
#include <math.h>
#include <iostream>
using namespace std;
double test(int k)
{
double a = 0;
for(int i = 0; i < 30000000; i++)
{
a += sqrt(double(i+k*k*k));
}
return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
LARGE_INTEGER start;
QueryPerformanceCounter(&start);
pragma omp parallel for//OpenMP优化
for(int i = 0; i < 8; i++)
{
double r = test(i+1);
cout << "r = " << r << endl;
}
LARGE_INTEGER end, freq;
QueryPerformanceCounter(&end);
QueryPerformanceFrequency(&freq);
double time = 1000.0 * (end.QuadPart - start.QuadPart) / freq.QuadPart;
cout << "run time:" << time << "ms."<< endl;
return 0;
}
3、我的机器是双核E7500,经过OpenMP优化的运行时间几乎是不优化的二分之一。