OpenMP并行计算PI的值

用VS新建一个工程后,首先要右键项目,属性--C/C++--语言,,在右边的对话框中OpenMP支持选择是;

程序代码为:

#include<stdio.h>

#include<time.h>

#include<omp.h>

 

static long num_steps = 100000;

double step,pi;

void main()

{

    clock_t t1=clock();

    int i;

    double x,sum = 0.0;

    step = 1.0/(double)num_steps;

#pragma omp parallel for reduction(+:sum)

    for(i = 0;i<num_steps;i++)

    {

        x = (i+0.5)*step;

        sum = sum + 4.0/(1.0+x*x);

        printf("%d",omp_get_thread_num());

    }

    pi = step *sum;

    clock_t t2 =clock();

    printf("pi=%f,用时:%d\n",pi,t2-t1);

}

 上述代码使用了规约rduction(op:list);这样每个线程会有一个私有的list,当所有线程的list计算完成之后,每个线程的私有list值将被op规约为一个list值。

时间: 2024-09-17 04:48:02

OpenMP并行计算PI的值的相关文章

用hadoop计算PI值,hadoop计算PI值

一.计算PI值的方式与原理 &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;     百度一下,计算PI的方法还真不少.但在hadoop examples代码中的注释写的是:是采用 Quasi-Monte Carlo 算法来估算PI的值. 维基百科中对Quasi-Monte Carlo的描述比较理论,好多难懂的公式. 好在google了一把,找到了斯坦福大学网站上的一篇文章:<通过扔飞镖也能得出PI的值?&g

使用.net Remtoing进行并行计算

使用.net Remtoing并行计算摘要,本文分析了一个使用.net romoting进行并行计算PI值的程序, 并给出结果及性能分析. 在MSDN上发现一篇文章是介绍如何使用.net Remoting进行并行计算的,刚好本人对并行计算很有兴趣,于是仔细地分析了一下此程序的代码.原文及程序可以在此处获得.由于觉得原文只是作了一个大致的讲解,有很多细节只是掩藏在源代码中,所以在花了很多时间分析完源程序后,才对原文有了很深的理解,疏理出一些内容出来和大家分享. 一. 概述 .NET Remtoin

数学函数库:pi

pi (PHP3 , PHP4) pi ---&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 取得圆周率pi的值 语法 : double pi(void ); 说明 : 传回圆周率pi的近似值.

Tiny分布式计算框架开源了

源码地址: http://git.oschina.net/tinyframework/tiny http://git.oschina.net/tinyframework/tiny/tree/master/framework/org.tinygroup.pc 前面和果粉们说了,要在200果粉齐了的时候就开源分布式计算框架,在偶死皮赖脸的乞讨声中,终于够200了,没啥好说滴,开吧. 先说说我当时做分布式计算框架的背景故事,本来开始时我是需要一个分布式计算框架的,但是读了fourinone之后,我觉得

彻底搞定C语言指针 第六篇

指向另一指针的指针 一.针概念: 早在本系列第二篇中我就对指针的实质进行了阐述 .今天我们又要学习一个叫做指向另一指针地址的指针.让我们先回顾一下指针的概念吧! 当我 们程序如下申明变量: short int i: char a: short int * pi: 程序会 在内存某地址空间上为各变量开辟空间,如下图所示. 内存地址→6 7 8 9 10 11 12 13 14 15 ------------------- --------------------------------------

在Java类中灵活使用Static关键字

用专业术语来说,只有利用了new关键字创建对象后,才会在系统中为其创建存储空间.不过在有些特殊的情况下,程序员可能希望在没有创建对象的时候就能够为某个特定的成员分配存储空间或者可以调用某个方法等等.在Java中能否实现这个需求呢? 一.不建立对象即想使用的两种实际情况. 笔者提到的这个问题是否是无中生有呢?其实不然.在实际应用程序开发中,就经常会遇到这种情况.如现在需要三个对象,分别用来计算圆的面积.圆球的体积.圆柱的体积.在这三个对象的方法中,都需要用到一个叫做圆周率的常量,而且这个圆周率是固

&amp;#106avascript对象与数组参考大全(9)

参考|对象|数组 LN10 10的自然对数(约等于2.302) LOG2E 以2为底的e的对数(约等于1.442) LOG10E 以10为底的e的对数(约等于o.434) PI ∏的值(约等于3.14159) SQRT1_2 0.5的平方根(即l除以2的平方根,约等于o.707) SQRT2 2的平方根(约等于1.414) 方法 abs() 返回某数的绝对值(即该数与o的距离,例如,2与一2的绝对值都是2) acos() 返回某数的反余弦值(以弧度为单位) asin() 返回某数的反正弦值(以弧

JavaScript对象与数组参考大全3

javascript|参考|对象|数组 border <IMG>标记的BORDER特性 complete 表示浏览器是否完整地加载了图像的一个布尔值 height HEIGHT特性 hspace HSPACE特性 lowsrc LOWSRC特性 src SRC特性 vsPace VSPACE特性 width WIDTH特性 事件处理程序 Onload 图象载入 Onerror 载入错误 Onabort 取消 B.16 images数组 它是document对象的一个属性,文档中所有图像的列表.

JavaScript 对象与数组参考大全

javascript|参考|对象|数组 JavaScript 对象与数组参考大全 本文列举了各种Javascript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考Online Companion中的超级文本Object Hierarchy页面(http://www.netscapepress.com/support/javascript/10-9.htm),以便了解这些对象之间是如何相互关联