概述
// OpenMP1.cpp : 定义控制台应用程序的入口点。
//使用临界区方法进行求和。
#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;
clock_t t1=clock();
#pragma omp parallel
{
long id=omp_get_thread_num();
long long sumtmp=0;
for(long i=id+1;i<=1000000000;i=i+2)
sumtmp=sumtmp+i;
#pragma omp critical
sum=sum+sumtmp;
}
clock_t t2=clock();
printf("sum=%lldn",sum);
printf("parallel time=%dn",(t2-t1));
sum=0;
t1=clock();
for(long i=1;i<=1000000000;i+=1)
sum=sum+i;
t2=clock();
printf("sum=%lldn",sum);
printf("serial time=%dn",(t2-t1));
system("pause");
return 0;
}
运行结果:
分析:
加速比为:2278/1170=1.947
最后
以上就是洁净大地为你收集整理的并行计算—OpenMP—临界区方法求和的全部内容,希望文章能够帮你解决并行计算—OpenMP—临界区方法求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复