MPI和OpenMP混合编程计算pi π值

该博客介绍了如何使用MPI和OpenMP进行混合编程来并行计算π的值。代码中,首先初始化MPI环境,然后确定进程数量和当前进程的排名。接着,通过OpenMP并行循环,每个进程计算一部分π的和,最后使用MPI的Reduce函数将所有进程的局部结果汇总。运行结果显示了并行计算得到的π值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPI和OpenMP混合编程,π

#include "stdio.h"
#include "mpi.h"
#include "omp.h"
#include "math.h"
#define NUM_THREADS 8
long int n=10000000;
int main(int argc,char*argv[])
{
    int my_rank,numprocs;
    long int i,my_n,my_first_i,my_last_i;
    double my_pi=0.0,pi,h,x;
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
    h=1.0/n;
    my_n=n/numprocs;
    my_first_i=my_rank*my_n;
    my_last_i=my_first_i+my_n;
    omp_set_num_threads(NUM_THREADS);
     #pragma omp parallel for reduction(+:my_pi)private(x,i)
    for(i=my_first_i;i<my_last_i;i++)
    {
        x=(i+0.5)*h;
        my_pi=my_pi+4.0/(1.0+x*x);
    }
    MPI_Reduce(&my_pi,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
    if(my_rank==0)
    {
        printf("Approximation of pi:%15.13f\n",pi*h);
    }
    MPI_Finalize();
    return 0;
}
// mpicc demo2.c -o demo3 -fopenmp
// mpirun -np 4 ./demo3

编译运行结果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

各可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值