⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpi410.htm

📁 该文件为mpich2的开发文档
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
   <TITLE>第四章: 集合通信</TITLE>
   <META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (Win16; I) [Netscape]">
</HEAD>
<BODY BGCOLOR="#F0F8FF">

<TABLE WIDTH="100%" >
<TR>
<TD align=left><B><FONT SIZE=+1>4.10 归约-分散(Reduce-Scatter)</FONT></B></TD>

<TD align=right><A HREF="mpi49.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi49.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi411.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi411.htm"><IMG SRC="forward.gif" tppabs="http://arch.cs.pku.edu.cn/image/forward.gif" ALT="FORWARD" HEIGHT=32 WIDTH=32></A>
</TD>
</TR>
</TABLE>

<P>
<HR WIDTH="100%"></P>

<P>MPI中还包括对每个归约操作的变形,即将结果分散到组内的所有进程中去.</P>

<PRE>MPI_REDUCE_SCATTER(sendbuf, recvbuf, recvcounts, datatype, op, comm)
 IN   sendbuf       发送消息缓冲区的起始地址(可变)
 OUT  recvbuf       接收消息缓冲区的起始地址(可变)
 IN   recvcounts    整型数组,存放着分布在每个进程的结果元素个数, 所
                    有进程的数组都必须相同.
 IN   datatype      输入缓冲区的元素类型(句柄)
 IN   op            操作(句柄)
 IN   comm          通信子(句柄)

int MPI_Reduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts
                       MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, DATATYPE, 
                   OP, COMM, IERROR)
    &lt;type&gt; SENDBUF(*), RECVBUF(*)
    INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR</PRE>

<P>MPI_REDUCE_SCATTER对由sendbuf、count和datatype定义的发送缓冲区中的数组逐个元素进行归约操作,这个数组的长度count
= ∑<SUB>i</SUB>recvcount[i].然后, 这个结果向量被分成n个互不连通的部分,这里n为组中成员数.第i段中包含recvcounts[i]个元素,第i段发送到进程i并且存放在由recvbuf、recvcounts[i]和datatype定义的输入缓冲区中.</P>

<P><B>对实现者的建议:</B>MPI_REDUCE_SCATTER例程从功能上等价于:一个count次(等于
recvcounts[i])MPI_REDUCE操作,后面跟一个sendcounts次(等于recvcounts)MPI_SCATTERV操作,但直接实现可能运行得更快一些<B>(对实现者的建议结尾)</B>.</P>

<P>
<HR WIDTH="100%"></P>

<TABLE WIDTH="100%" >
<TR>
<TD align=left>Copyright: NPACT </TD>

<TD align=right><A HREF="mpi49.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi49.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi411.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi411.htm"><IMG SRC="forward.gif" tppabs="http://arch.cs.pku.edu.cn/image/forward.gif" ALT="FORWARD" HEIGHT=32 WIDTH=32></A>
</TD>
</TR>
</TABLE>

</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -