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

Posted 各可

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MPI和OpenMP混合编程计算pi π值相关的知识,希望对你有一定的参考价值。

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 demo2 -fopenmp
// mpirun ./demo2 -up 6

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

以上是关于MPI和OpenMP混合编程计算pi π值的主要内容,如果未能解决你的问题,请参考以下文章

MPI并行计算pi π

在混合 MPI/OpenMP 中进行 MPI 调用的线程

Openmp并行计算pi π

OpenMP 和 MPI 混合程序

基于 MPI/OpenMP 混合编程的大规模多体(N-Body)问题仿真实验

MPI计算π