📄 mpi410.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)
<type> 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 + -