OpenMP 之 临界区 求数值积分圆周率(pi)(学习笔记)
来源:互联网 发布:淘宝如何发货 编辑:程序博客网 时间:2024/06/13 00:50
OpenMP 并行求数值积分, 临界区求数值积分圆周率(pi)方法
开启两个并行线程程序如下:
#include "stdafx.h"#include <stdio.h>#include <time.h>#include <stdlib.h>#include <omp.h>static long num_steps = 100000000;double step;#define NUM_THREADS 2int _tmain(int argc, _TCHAR* argv[]){int i;clock_t t1,t2;double x,sum ,pi = 0.0;step = 1.0/(double) num_steps;omp_set_num_threads(NUM_THREADS);t1 = clock(); #pragma omp parallel private (i,x,sum){int id = omp_get_thread_num();for(i= id,sum = 0.0; i < num_steps ;i = i+NUM_THREADS){x=(i+0.5)*step;sum = sum + 4.0/(1.0 + x*x);} #pragma omp criticalpi += sum * step;}t2 = clock();printf("pi = %.15f\n",pi);printf("parallel time=%d\n",(t2-t1));t1 = clock();sum =0;for (int i=0;i <num_steps;i++){x=(i+0.5)*step;sum = sum + 4.0/(1.0 + x*x);}pi = step * sum;t2 = clock();printf("pi = %.15f\n",pi);printf("serial time=%d\n",(t2-t1));printf("星星笔记\n");system("pause");return 0;}运行结果如下图:
开启四个并行线程(修改如下语句):
#define NUM_THREADS 4运行结果如下图:
0 0
- OpenMP 之 临界区 求数值积分圆周率(pi)(学习笔记)
- OpenMP 之reduction 子句求数值积分圆周率(pi)(学习笔记)
- OpenMP之数值积分(求圆周率Pi)(sections)
- OpenMP 之 sections 求素数、求和、求积分圆周率(星星笔记)
- Win32API、MFC、.NET并行求数值积分PI(星星笔记)
- java 多线程并行求数值积分(πPI) 之 join() 方法应用
- OpenMp之临界区求和
- matlab数值积分方法求pi的近似值及其比较
- Apache Commons Math3学习笔记(3) - 数值积分
- 蒙特卡罗算法计算圆周率PI(C++)
- 【语言-汇编】圆周率(PI)计算
- 初学C语言:求圆周率pi的近似值(pi/4=1-1/3+1/5-1/7...)
- 一起来学OpenMP(7)——线程同步之临界区
- 一起来学OpenMP(7)——线程同步之临界区
- 一起来学OpenMP(7)——线程同步之临界区
- JavaScript计算圆周率(解析几何+定积分)
- openMP学习笔记(一)
- 数值积分(转载)
- C++编译器的函数编译流程
- android 解析程序包时出现问题
- Reverse Integer
- TCP状态转换图
- 互联网大佬扎堆出书 不为赚钱只为粉丝
- OpenMP 之 临界区 求数值积分圆周率(pi)(学习笔记)
- 关于数学学习,推荐一篇好文(博士生必读)
- select函数详解及应用
- C++ Template Instantiate Sample
- 将应用程序从Flex 3迁移至Flex 4
- java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.wid
- cocos2dx_3.X项目重新写(一)帧动画的改变
- linux svn下载文件到本地
- Android上用Jackson Json解析json