聚合通信:
同一通信器内的所有进程都参加;
所有进程的函数调用形式相同;
阻塞通信方式;
不需要tag
全局通信函数
MPI_Bcast()
MPI_Scatter()
MPI_Gather()
MPI_Allgather()
MPI_Alltoall()
全局规约函数
MPI_Reduce()
MPI_Allreduce()
MPI_Reduce_scatter()
MPI_Scan()
同步函数
MPI_Barrier()
例如:计算pi:
/**
*pi=1/(1+X^2)在[0,1]上积分
* 计算pi=1/N*sum(4/(1+x^2)).
*/
#include "stdafx.h"
#include "mpi.h"
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
double f(double a)
{
return (4.0 / (1.0 + a * a));
}
int main(int argc, char *argv[])
{
int myrank, nprocs, i, N, n, end;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0