📄 mpi361.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> ICPSEP Content
</TITLE>
<META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (X11; I; SunOS 5.4 sun4m) [Netscape]">
</HEAD>
<BODY BGCOLOR="#F0F8FF">
<TABLE WIDTH="100%" >
<TR>
<TD align=left><FONT SIZE=+2>3.6.1 缓存模式的模型实现 </FONT></TD>
<TD align=right><A HREF="mpi36.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi36.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi37.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi37.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>模型实现使用<A HREF="mpi313.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi313.htm">3.13节</A>描述的打包和拆包函数, 以及<A HREF="mpi37.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi37.htm">3.7节</A>描述的非阻塞通信函数。
</P>
<P>我们假设保留挂起消息输入(PME)的一个环形队列。每个输入包含一个通信请求句柄,用于识别一个挂起的非阻塞发送,还包含一个指向下一个输入的指针及被打包的消息数据。输入被存在缓存中的连续位置。在队尾和队头之间可得到空闲空间。
</P>
<P>一个缓存发送的调用导致下列代码的执行。 </P>
<UL>
<LI>从头到尾顺序扫描PME队列, 删出已完成通信的所有输入, 直到第一个未完成请求的输入;
修改队头指向这个输入。</LI>
<LI>计算存储新消息输入需要的字节数n (用MPI_PACK_SIZE计算打包消息的长度加上请求句柄和指针的空间)。
</LI>
<LI>在缓存中找到下一个n字节长的连续空闲空间(跟在队尾的空间, 或如果队尾太接近缓存末尾,
缓存的起始空间)。如果空间没有找到,那么提出缓存溢出错。 </LI>
<LI>给在连续空间的PME队尾加这个新输入, 包含请求句柄, 下一个指针和打包的消息数据;
MPI_PACK用于打包数据。 </LI>
<LI>邮出打包数据的非阻塞发送( 标准模式 )。 </LI>
<LI>返回</LI>
</UL>
<P>
<HR WIDTH="100%"></P>
<TABLE WIDTH="100%" >
<TR>
<TD align=left>Copyright: NPACT <BR>
</TD>
<TD align=right><A HREF="mpi36.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi36.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi37.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi37.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 + -