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

📄 mpi842.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>8.4.2 MPI库的实现</H2>
</TD>

<TD align=right><A HREF="mpi841.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi841.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi843.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi843.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>在Unix系统,在用C所实现的MPI库中,存在各种可能的选项,这里提出最明显的两个。哪一个更好依赖于链接器和编译器是否支持微弱符号。</P>

<P>带有微弱符号的系统</P>

<P>如果编译器和链接器支持微弱的外部字符,那么通过使用#pragma weak,仅要求使用单一库,因此</P>

<P>#pragma weak MPI_Example = PMPI_Example</P>

<P>int PMPI_Example(/* appropriate args */)</P>

<P>{</P>

<UL>
<P>/* Useful content */</P>
</UL>

<P>}</P>

<P>这个#pragma weak的效果是将外部符号MPI_Example定义为一个微弱定义。这意味着如果存在该符号的其它定义(例如在剖析库中),链接器将不会抱怨,然而不存在其它定义,那么链接器将使用微弱定义。
</P>

<P>不带有微弱符号的系统</P>

<P>如果缺少微弱符号的定义,那么一个可能的解决方法将是使用C宏预处理器,从而,
</P>

<P>#ifdef PROFILELIB</P>

<P># ifdef __STDC__</P>

<P># define FUNCTION(name) P##name</P>

<P># else</P>

<P># define FUNCTION(name) P/**/name</P>

<P># endif</P>

<P>#else</P>

<P># define FUNCTION(name) name</P>

<P>#endif</P>

<P>库中每一个用户可见的函数将被声明如下</P>

<P>int FUNCTION(MPI_Example) (/* appropriate args */)</P>

<P>{</P>

<UL>
<P>/* Useful content */</P>
</UL>

<P>}</P>

<P>同样的源文件可以被编译而产生库的全部版本,这依赖于PROFILELIB宏符号的状态。</P>

<P>要求标准MPI库以如下的方式建立,即在一次就可获取所包含的MPI库函数。 这是有点令人不愉快的要求,由于它可能意味着每一外部函数不得不从一个外部分离的文件上编译。然而这是必须的,以致剖析函数的作者仅需定义那些它们希望截取的MPI函数,引用由正常MPI库所完成的任何其它函数。因此链接步骤可以象这样</P>

<P>% cc … -lmyprof -lpmpi -lmpi</P>

<P>这里libmyprof.a包含截取一些MPI函数的剖析函数。libpmpi.a包含“轮换名”的MPI函数,并且包含正常的MPI函数定义。
</P>

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

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

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