美文网首页
并行计算:圆周率计算

并行计算:圆周率计算

作者: W杂货铺W | 来源:发表于2019-04-12 02:14 被阅读0次

数学

\frac{\pi}{4} = \int_{0}^{1}\frac{1}{1+x^2}dx

思想

把0-1下面积分为n个小矩形,再每个处理器上处理一部分面积,最后加起来
比较重要的是for (i = myid + 1; i <= n; i += numprocs)来分配每个处理器计算的矩形id,很巧妙

代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <mpi.h>

double f(double);

double f(double a) {
    return 4.0 / (1.0 + a * a);
}

int main(int argc, char* argv[])
{
    int n, myid, numproc, i;
    double PI25DT = 3.141592653589793238462643;
    double mypi, pi, h, sum, x;
    double startwtime = 0.0, endwtime;

    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &numproc);
    MPI_Comm_rank(MPI_COMM_WORLD, &myid);

    n = 100000000;
    
    startwtime = MPI_Wtime();
    h = 1.0 / double(n);
    sum = 0.0;

    for (i = myid + 1; i <= n; i += numproc) {
        x = h * (double(i) - 0.5);
        sum += f(x);
    }
    mypi = h * sum;
    MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
    if (myid == 0) {
        endwtime = MPI_Wtime();
        printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT));
        printf("wall clock time = %f\n", endwtime);
        fflush(stdout);
    }

    MPI_Finalize();
    return 0;
}
performance

相关文章

  • 并行计算:圆周率计算

    数学 思想 把0-1下面积分为n个小矩形,再每个处理器上处理一部分面积,最后加起来比较重要的是for (i = m...

  • 第一章 大数据处理技术简介

    并行计算技术 并行计算:定义: 同时对多条指令,多个任务或多个数据进行处理的一种计算技术并行计算系统:实现并行计算...

  • Spark并行计算内容总结

    (一)并行计算的简介 并行计算:简单来讲,并行计算就是同时使用多个计算资源来解决一个计算问题,具有以下特点: 一个...

  • 指北 | 谈谈ForkJoin框架的设计与实现

    在了解Fork-Join之前,我们得先了解什么是并行计算。 并行计算 相对于串行计算,并行计算可以划分成时间并行和...

  • 并行计算

    并行计算机 并行计算机分类 数据与指令 SIMD 单条指令并行计算多条数据,如 A=A+1(备注:其中A为数组) ...

  • Java并发-ForkJoin

    主要用于并行计算中,和 MapReduce 原理类似,都是把大的计算任务拆分成多个小任务并行计算。

  • 分布式计算框架之 MapReduce 剖析

    MapReduce 是一种简化、并行计算编程模型,MapReduce 用于进行大数据量的计算,能让缺乏并行计算经验...

  • 4.5 实例6:圆周率的计算

    四、程序的控制结构 4.5 实例6:圆周率的计算 "圆周率的计算"问题分析 圆周率的近似计算公式 蒙特卡洛方法 [...

  • XGBoost面试题详解

    FAQ 1. XGBoost如何进行并行计算?XGBoost是基于Boosting思想,其并行计算不是在Tree层...

  • 对等模式 实现Jacobi迭代的并行计算 C++版

    两小时入门MPI与并行计算(五):对等模式(实现Jacobi迭代的并行计算)[https://zhuanlan.z...

网友评论

      本文标题:并行计算:圆周率计算

      本文链接:https://www.haomeiwen.com/subject/vgnfwqtx.html