// OpenMP1.cpp : 定义控制台应用程序的入口点。
//使用for指令方法进行求和。
#include "stdafx.h"
#include <omp.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
omp_set_num_threads(2);
long long sum=0;
long long sumtmp[2];
clock_t t1=clock();
#pragma omp parallel
{
long i;
long id=omp_get_thread_num();
long long temp=0l;
#pragma omp for
for(i=1;i<=1000000000;i++)
temp+=i;
sumtmp[id]=temp;
}
for(long i=0;i<2;i++)
sum+=sumtmp[i];
clock_t t2=clock();
printf("sum=%lld\n",sum);
printf("parallel time=%d\n",(t2-t1));
sum=0;
t1=clock();
for(long i=1;i<=1000000000;i+=1)
sum=sum+i;
t2=clock();
printf("sum=%lld\n",sum);
printf("serial time=%d\n",(t2-t1));
system("pause");
return 0;
}
运行结果:
分析:
加速比:2262/1154=1.960