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

📄 mpi655.htm

📁 该文件为mpich2的开发文档
💻 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.5笛卡尔轮换定位</H2>
</TD>

<TD align=right><A HREF="mpi654.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi654.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi656.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi656.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_SENDRECV操作用于在坐标方向上执行数据轮换。作为输入,MPI_SENDRECV将源进程的标识数作为接受,目标进程的标识数作为发送。如果一个笛卡尔进程组调用函数MPI_CART_SHIFT,那么此函数将上面的标识符提供给调用进程,然后将其传送给MPI_SENDRECV。用户说明坐标方向和步长(正数或负数)。此函数是居域的。</P>

<P>MPI_CART_SHIFT(comm, direction, disp, rank_source, rank_dest)</P>

<UL>
<P>IN comm 带有笛卡尔结构的通信子(句柄)</P>

<P>IN direction 轮换的坐标维(整数)</P>

<P>IN disp 偏移(>0:向上轮换,<0:向下偏移)(整数)</P>

<P>OUT rank_source 源进程的标识数(整数)</P>

<P>OUT rank_dest 目标进程的标识数(整数)</P>
</UL>

<P>int MPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source,
int *rank_dest)</P>

<P>MPI_CART_SHIFT(COMM, DIRECTION, DISP, RANK_SOURCE, RANK_DEST, IERROR)</P>

<UL>
<P>INTEGER COMM, DIRECTION, DISP, RANK_SOURCE, RANK_DEST, IERROR</P>
</UL>

<P>依赖于被说明的坐标方向上的笛卡尔组的周期性,MPI_CART_SHIFT提供用于循环或末尾轮换的标识符。对于末尾轮换情况,值MPI_PROC_NULL可以在rank_source或rank_dest中返回,这说明用于轮换的源或目的超出范围。
</P>

<P>例6.4通信子comm存在一个与其相连的二维、周期性的笛卡尔拓扑。一个二维REAL型的矩阵存储在变量A中,每一进程一个元素。人们希望通过i步轮换第i列(垂直的,例如,沿着列)来扭斜这个矩阵。</P>

<P>…</P>

<P>C find process rank</P>

<UL>
<P>CALL MPI_COMM_RANK(comm, rank, ierr)</P>
</UL>

<P>C find cartesian coordinates</P>

<UL>
<P>CALL MPI_CART_COORDS(comm, rank, maxdims, coords, ierr)</P>
</UL>

<P>C compute shift source and destination</P>

<UL>
<P>CALL MPI_CART_SHIFT(comm, 1, coords(2), source, dest, ierr)</P>
</UL>

<P>C skew array</P>

<UL>
<P>CALL MPI_SENDRECV_REPLACE(A, 1, MPI_REAL, dest, 1, source, 0, comm,</P>

<P>+ status, ierr)</P>
</UL>

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

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

<TD align=right><A HREF="mpi654.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi654.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi656.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi656.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 + -