<br><font size=2 face="sans-serif">I've been working on a new README file
for the comm stack. &nbsp;Please take a look at it, since I hope that it
will answer some of the recent questions. &nbsp;It is a little rough, but
I wanted to get it out fast.</font>
<br><font size=2 face="sans-serif"><br>
Thanks,</font>
<br><font size=2 face="sans-serif">Joe Ratterman</font>
<br><font size=2 face="sans-serif">jratt@us.ibm.com</font>
<br>
<br>
<br><tt><font size=2>About the DCMF messaging stack<br>
 &nbsp; &nbsp;This is the DCMF messaging stack, currently for use on the
IBM Blue<br>
 &nbsp; &nbsp;Gene/P platform. The package does contain more than just
the DCMF<br>
 &nbsp; &nbsp;libraries. Everything is collected together to ensure that
it works<br>
 &nbsp; &nbsp;correctly.<br>
<br>
 &nbsp; &nbsp;This file is generated from the POD in README.pod. Please
only change<br>
 &nbsp; &nbsp;that file.<br>
<br>
 &nbsp; &nbsp;DCMF<br>
 &nbsp; &nbsp; &nbsp; &nbsp;DCMF stands for *Deep Computing Messaging Framework*.
It forms the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;basis of the active message layer in use, and
is the prefix on all C<br>
 &nbsp; &nbsp; &nbsp; &nbsp;API symbols.<br>
<br>
 &nbsp; &nbsp;CCMI<br>
 &nbsp; &nbsp; &nbsp; &nbsp;CCMI stands for *Common Collective Messaging
Interface*. It is a<br>
 &nbsp; &nbsp; &nbsp; &nbsp;general system for writing cross-platform collectives.
Internally,<br>
 &nbsp; &nbsp; &nbsp; &nbsp;it uses the CCMI namespace, but the external
C API still uses the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;DCMF prefix.<br>
<br>
Directory layout<br>
 &nbsp; &nbsp;The directories are designed to organize components effectively.
There<br>
 &nbsp; &nbsp;is some historical carry-over, but the layout is intended
to group<br>
 &nbsp; &nbsp;related items.<br>
<br>
 &nbsp;tools/<br>
 &nbsp; &nbsp;This is the simplest directory. It contains programs and
scripts that<br>
 &nbsp; &nbsp;run on the FENs and help make your life better.<br>
<br>
 &nbsp;sys/<br>
 &nbsp; &nbsp;The sys directory contains low-level software written entirely
by IBM.<br>
 &nbsp; &nbsp;It is generally assumed to be for software that talks to
the HW/SPIs or<br>
 &nbsp; &nbsp;implements a new external API.<br>
<br>
 &nbsp; &nbsp;sys/include/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;The API header files exist in this directory.
They are installed by<br>
 &nbsp; &nbsp; &nbsp; &nbsp;the build process of the tool that owns them.<br>
<br>
 &nbsp; &nbsp;sys/messaging/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is the home of the DCMF layer. This directory
contains a<br>
 &nbsp; &nbsp; &nbsp; &nbsp;&quot;configure&quot; script that can be used
to setup the build with various<br>
 &nbsp; &nbsp; &nbsp; &nbsp;options. The defaults are generally good for
our setup, but other<br>
 &nbsp; &nbsp; &nbsp; &nbsp;people may have different goals. It is not
necessary to run<br>
 &nbsp; &nbsp; &nbsp; &nbsp;&quot;configure&quot; from inside the messaging
directory. This allows<br>
 &nbsp; &nbsp; &nbsp; &nbsp;multiple different builds from the same source.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;There are also a number of older tools in this
directory that should<br>
 &nbsp; &nbsp; &nbsp; &nbsp;be moved in the future.<br>
<br>
 &nbsp; &nbsp;sys/collectives/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is the home of the CCMI layer. This directory
also contains a<br>
 &nbsp; &nbsp; &nbsp; &nbsp;configure script that works very much like
the one in<br>
 &nbsp; &nbsp; &nbsp; &nbsp;sys/messaging/.<br>
<br>
 &nbsp; &nbsp;sys/tests/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is a small (but growing) test repository,
able to test many<br>
 &nbsp; &nbsp; &nbsp; &nbsp;different layers.<br>
<br>
 &nbsp; &nbsp;sys/examples/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;These files are examples of how to use DCMF
C API documentation.<br>
 &nbsp; &nbsp; &nbsp; &nbsp;They are also included in the documentation
that is generated by<br>
 &nbsp; &nbsp; &nbsp; &nbsp;doxygen.<br>
<br>
 &nbsp; &nbsp;sys/build-*/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;These directories are the build paths for the
source directories.<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Since it is so easy to avoid building in the
src path, we try to<br>
 &nbsp; &nbsp; &nbsp; &nbsp;avoid mixing the source and objects--it simplifies
cleaning up and<br>
 &nbsp; &nbsp; &nbsp; &nbsp;building with multiple compilers.<br>
<br>
 &nbsp;lib/<br>
 &nbsp; &nbsp;This is generally for imported external packages.<br>
<br>
 &nbsp; &nbsp;lib/mpi/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is &quot;beefed up&quot; version of the
MPICH2 distribution from ANL. It<br>
 &nbsp; &nbsp; &nbsp; &nbsp;contains a modified version of MPICH2 1.0.4p1
in lib/mpi/mpich2/.<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Mostly, the modifications consist of a new
MPID device, a new MPI-IO<br>
 &nbsp; &nbsp; &nbsp; &nbsp;FS, and some changes to the test bucket scripts.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;The m4 and autoconf directories are from when
MPICH2 required a<br>
 &nbsp; &nbsp; &nbsp; &nbsp;version of those tools that was not installed
on the build systems.<br>
 &nbsp; &nbsp; &nbsp; &nbsp;They are not currently used on the BG/P platform.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;The sowing directory contains the source for
the doctext tool. It is<br>
 &nbsp; &nbsp; &nbsp; &nbsp;used to create the manual and html pages to
document the MPI2 API.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;The build and stage dirs are for object files
created by the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;building the components. Stage is the install
location for<br>
 &nbsp; &nbsp; &nbsp; &nbsp;sowing/doctext and, when used, m4 and autoconf.
There are two<br>
 &nbsp; &nbsp; &nbsp; &nbsp;version of the MPICH2 build under lib/mpi/build/mpich2/.
The *dcmf*<br>
 &nbsp; &nbsp; &nbsp; &nbsp;version is the standard version compiled with
GNU compiler suite and<br>
 &nbsp; &nbsp; &nbsp; &nbsp;shipped. The *dcmf-fast* version, which isn't
actually known to be<br>
 &nbsp; &nbsp; &nbsp; &nbsp;faster, is compiled with the IBM XL compiler
suite.<br>
<br>
 &nbsp; &nbsp;lib/ga/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is the GA-ARMCI distribution from PNNL.
It has been slightly<br>
 &nbsp; &nbsp; &nbsp; &nbsp;modified to work with the DCMF API. This is
a reference<br>
 &nbsp; &nbsp; &nbsp; &nbsp;implementation and has been released to the
GA community.<br>
<br>
Build system<br>
 &nbsp; &nbsp;The build system in use for the messaging stack is a bit
of a kludging<br>
 &nbsp; &nbsp;together of the more sane build systems found in most of
the<br>
 &nbsp; &nbsp;sub-components.<br>
<br>
 &nbsp;Make files<br>
 &nbsp; &nbsp;Generally, one should only really have to look at a few specific
files<br>
 &nbsp; &nbsp;to see how certain sections are built:<br>
<br>
 &nbsp; &nbsp;Makefile<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is top-level make file and is designed
to help build individual<br>
 &nbsp; &nbsp; &nbsp; &nbsp;components.<br>
<br>
 &nbsp; &nbsp;Make.rules*<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Make.rules is a symlink that is intended to
point to another<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Make.rules.* file. To aid in porting to other
build systems, the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Make.rules file is included (eventually) by
every other make file in<br>
 &nbsp; &nbsp; &nbsp; &nbsp;the system--they must first define a ROOTDIR
variable to store the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;path that contains Make.rules. The Make.rules.floor
contains logical<br>
 &nbsp; &nbsp; &nbsp; &nbsp;defaults for building everything based on the
installed floor on the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;FEN. Make.rules.ibm contains commands to get
the same information<br>
 &nbsp; &nbsp; &nbsp; &nbsp;from the internal build system.<br>
<br>
 &nbsp; &nbsp;lib/mpi/Makefile<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This file accommodates the large number of
options that must be<br>
 &nbsp; &nbsp; &nbsp; &nbsp;passed to the MPICH2 configure. Unlike the
DCMF and CCMI parts,<br>
 &nbsp; &nbsp; &nbsp; &nbsp;MPICH2 is a cross-platform system that has
no concept of the BG/P<br>
 &nbsp; &nbsp; &nbsp; &nbsp;install layout. Obviously MPICH2 can be configured
on it's own, but<br>
 &nbsp; &nbsp; &nbsp; &nbsp;it's quite hard to get the options correct.<br>
<br>
 &nbsp;Make targets<br>
 &nbsp; &nbsp;The build system is designed to detect the presence or lack
of the IBM<br>
 &nbsp; &nbsp;XL compiler suite. To force the build system to avoid XL,
add &quot;XL=&quot; to<br>
 &nbsp; &nbsp;your make command.<br>
<br>
 &nbsp; &nbsp;default &amp; install<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This is the default, and builds everything
below except for &quot;tests&quot;.<br>
<br>
 &nbsp; &nbsp;all This builds everything including &quot;tests&quot;.<br>
<br>
 &nbsp; &nbsp;docs<br>
 &nbsp; &nbsp; &nbsp; &nbsp;DCMF, CCMI, and the DCMF MPID device in MPICH2
all contain extensive<br>
 &nbsp; &nbsp; &nbsp; &nbsp;documentation. This rule builds and installs
it.<br>
<br>
 &nbsp; &nbsp;dcmf[-fast]<br>
 &nbsp; &nbsp; &nbsp; &nbsp;These are two different versions of the DCMF
library. The -fast<br>
 &nbsp; &nbsp; &nbsp; &nbsp;version is build without asset macros.<br>
<br>
 &nbsp; &nbsp;ccmi[-fast]<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Again, two versions of the CCMI library. The
-fast version is<br>
 &nbsp; &nbsp; &nbsp; &nbsp;compiled by the IBM XL compilers without assert
macros. It is not<br>
 &nbsp; &nbsp; &nbsp; &nbsp;known if it is actually faster.<br>
<br>
 &nbsp; &nbsp;mpi This simply runs the makefile in lib/mpi/.<br>
<br>
 &nbsp; &nbsp;ga &nbsp;Like mpi, this simply runs the makefile in lib/ga/.<br>
<br>
 &nbsp; &nbsp;tests<br>
 &nbsp; &nbsp; &nbsp; &nbsp;This builds the tests in sys/tests/.<br>
<br>
</font></tt>