📄 mpi657.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> ICPSEP Content
</TITLE>
<META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (Win95; I) [Netscape]">
</HEAD>
<BODY BGCOLOR="#F0F8FF">
<TABLE WIDTH="100%" >
<TR>
<TD align=left>
<H2>6.5.7 低级拓扑函数</H2>
</TD>
<TD align=right><A HREF="mpi656.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi656.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi66.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi66.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>
<P>MPI_CART_MAP(comm, ndims, dims, periods, newrank)</P>
<UL>
<P>IN comm 输入通信子(句柄)</P>
<P>IN ndims 笛卡尔结构的维数(整数)</P>
<P>IN dims 大小为ndims的整数矩阵,说明了每一维的进程数</P>
<P>IN periods 大小为ndims的逻辑矩阵,说明了在每一维上的周期性 </P>
<P>OUT newrank 调用进程已排序的标识数;如果调用进程不属于网格(整数) ,值为MPI_UNDEFINED</P>
</UL>
<P>MPI_CART_MAP(COMM, NDIMS, DIMS, PERIODS, NEWRANK, IERROR)</P>
<UL>
<P>INTEGER COMM, NDIMS, DIMS(*), NEWRANK, IERROR</P>
<P>LOGICAL PERIODS(*)</P>
</UL>
<P>MPI_CART_MAP为在物理机器上的调用进程计算一个“最优”的放置。这个函数的一个可能的实现,总是返回调用进程的标识数,即,不执行任何重排序。
</P>
<UL>
<P>对实现者的建议:函数MPI_CART_CREATE(comm,ndims,dims,period,reorder,comm_cart),且reorder=true,那么可以通过调用函数MPI_COMM_MAP(comm,ndims,dims,period,newrank),再调用MPI_COMM_SPLIT(comm,color,key,comm_cart)来实现。其中如果newrank≠MPI_UNDEFINED,则color=0;否则color=MPI_UNDEFINED且key=newrank。
</P>
<P>函数MPI_CART_SUB可以通过调用MPI_COMM_ SPLIT来实现,使用所缺维的单一数字编码作为color,而且单一保留维数的数字编码作为key。</P>
<P>通过使用缓存在通信子的拓扑信息,所有其它的笛卡尔拓扑函数可以局域实现。(建议结束)</P>
</UL>
<P>通用图结构相对应的新函数如下。 </P>
<P>MPI_GRAPH_MAP(comm, nnodes, index, edges, newrank)</P>
<UL>
<P>IN comm 输入通信子(句柄)</P>
<P>IN nnodes 图中节点数(整数)</P>
<P>IN index 整数矩阵描述节点度数(见MPI_GRAPH_CREATE)</P>
<P>IN edges 整数矩阵描述图结构</P>
<P>OUT newrank 调用进程重排序的标识数;</P>
</UL>
<P>如果调用进程不属于图(整数),则为MPI_UNDEFINED</P>
<P>int MPI_Graph_map(MPI_Com comm, int nnodes, int *index, int *edges,
int *newrank)</P>
<P>MPI_GRAPH_MAP(COMM, NNODES, INDEX, EDGES, NEWRANK, IERROR)</P>
<UL>
<P>INTEGER COMM, NNODES, INDEX(*), EDGES(*), NEWRANK, IERROR</P>
<P>对实现者的建议:函数MPI_CART_CREATE(comm,nnode,index,edges,reorder,comm_graph),且reorder=true,那么可以通过调用函数MPI_COMM_MAP(comm,nnode,index,edges,newrank),再调用MPI_COMM_SPLIT(comm,color,key,comm_graph)来实现。其中如果newrank≠MPI_UNDEFINED,则color=0;否则color=MPI_UNDEFINED且key=newrank。
</P>
<P>通过使用缓存在通信子的拓扑信息,所有其它的笛卡尔拓扑函数可以局域实现。(建议结束)</P>
</UL>
<P>
<HR WIDTH="100%"></P>
<TABLE WIDTH="100%" >
<TR>
<TD align=left>Copyright: NPACT </TD>
<TD align=right><A HREF="mpi656.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi656.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi66.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi66.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 + -