并行计算—OpenMP—临界区方法求和

来源:互联网 发布:mac ssh key 目录 编辑:程序博客网 时间:2024/06/04 19:30
// 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 criticalsum=sum+sumtmp;}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;}

运行结果:


分析:

    加速比为:2278/1170=1.947

0 0
原创粉丝点击