例子:求两个向量的内积,并将结果返回进程0 subroutine par_blas1(m,a,b,c,comm) real a(m),b(m) local slice of array real c !result real sum integer m,comm,i,ierr c !local sum sum=0.0d0 do i=1,m sum=sum+a(i)*b(i) enddo global sum call MPI Reduce(sum,c,1,MPI REAL,MPI SUM,0, & comm ierr) +全规约:MPI Allreduce(),除要求将结果返回 到所有进程外,与MPI_Reduce()一致: +规约分散:MPI_Reduce_scatter(),将规约结果 分散到各进程; +并行前缀计算:MPI_Scan() 224 例子: 求两个向量的内积,并将结果返回进程 0 subroutine par_blas1(m,a,b,c,comm) real a(m),b(m) ! local slice of array real c ! result real sum integer m,comm,i,ierr c c !local sum sum=0.0d0 do i=1,m sum=sum+a(i)*b(i) enddo c ! global sum call MPI_Reduce(sum,c,1,MPI_REAL,MPI_SUM,0, & comm,ierr) 全规约: MPI_Allreduce(), 除要求将结果返回 到所有进程外,与 MPI_Reduce()一致; 规约分散: MPI_Reduce_scatter(),将规约结果 分散到各进程; 并行前缀计算:MPI_Scan()