[dcmf] New DCMF Readme

Joseph Ratterman jratt at us.ibm.com
Wed Feb 6 14:48:01 CST 2008


I've been working on a new README file for the comm stack.  Please take a 
look at it, since I hope that it will answer some of the recent questions. 
 It is a little rough, but I wanted to get it out fast.

Thanks,
Joe Ratterman
jratt at us.ibm.com


About the DCMF messaging stack
    This is the DCMF messaging stack, currently for use on the IBM Blue
    Gene/P platform. The package does contain more than just the DCMF
    libraries. Everything is collected together to ensure that it works
    correctly.

    This file is generated from the POD in README.pod. Please only change
    that file.

    DCMF
        DCMF stands for *Deep Computing Messaging Framework*. It forms the
        basis of the active message layer in use, and is the prefix on all 
C
        API symbols.

    CCMI
        CCMI stands for *Common Collective Messaging Interface*. It is a
        general system for writing cross-platform collectives. Internally,
        it uses the CCMI namespace, but the external C API still uses the
        DCMF prefix.

Directory layout
    The directories are designed to organize components effectively. There
    is some historical carry-over, but the layout is intended to group
    related items.

  tools/
    This is the simplest directory. It contains programs and scripts that
    run on the FENs and help make your life better.

  sys/
    The sys directory contains low-level software written entirely by IBM.
    It is generally assumed to be for software that talks to the HW/SPIs 
or
    implements a new external API.

    sys/include/
        The API header files exist in this directory. They are installed 
by
        the build process of the tool that owns them.

    sys/messaging/
        This is the home of the DCMF layer. This directory contains a
        "configure" script that can be used to setup the build with 
various
        options. The defaults are generally good for our setup, but other
        people may have different goals. It is not necessary to run
        "configure" from inside the messaging directory. This allows
        multiple different builds from the same source.

        There are also a number of older tools in this directory that 
should
        be moved in the future.

    sys/collectives/
        This is the home of the CCMI layer. This directory also contains a
        configure script that works very much like the one in
        sys/messaging/.

    sys/tests/
        This is a small (but growing) test repository, able to test many
        different layers.

    sys/examples/
        These files are examples of how to use DCMF C API documentation.
        They are also included in the documentation that is generated by
        doxygen.

    sys/build-*/
        These directories are the build paths for the source directories.
        Since it is so easy to avoid building in the src path, we try to
        avoid mixing the source and objects--it simplifies cleaning up and
        building with multiple compilers.

  lib/
    This is generally for imported external packages.

    lib/mpi/
        This is "beefed up" version of the MPICH2 distribution from ANL. 
It
        contains a modified version of MPICH2 1.0.4p1 in lib/mpi/mpich2/.
        Mostly, the modifications consist of a new MPID device, a new 
MPI-IO
        FS, and some changes to the test bucket scripts.

        The m4 and autoconf directories are from when MPICH2 required a
        version of those tools that was not installed on the build 
systems.
        They are not currently used on the BG/P platform.

        The sowing directory contains the source for the doctext tool. It 
is
        used to create the manual and html pages to document the MPI2 API.

        The build and stage dirs are for object files created by the
        building the components. Stage is the install location for
        sowing/doctext and, when used, m4 and autoconf. There are two
        version of the MPICH2 build under lib/mpi/build/mpich2/. The 
*dcmf*
        version is the standard version compiled with GNU compiler suite 
and
        shipped. The *dcmf-fast* version, which isn't actually known to be
        faster, is compiled with the IBM XL compiler suite.

    lib/ga/
        This is the GA-ARMCI distribution from PNNL. It has been slightly
        modified to work with the DCMF API. This is a reference
        implementation and has been released to the GA community.

Build system
    The build system in use for the messaging stack is a bit of a kludging
    together of the more sane build systems found in most of the
    sub-components.

  Make files
    Generally, one should only really have to look at a few specific files
    to see how certain sections are built:

    Makefile
        This is top-level make file and is designed to help build 
individual
        components.

    Make.rules*
        Make.rules is a symlink that is intended to point to another
        Make.rules.* file. To aid in porting to other build systems, the
        Make.rules file is included (eventually) by every other make file 
in
        the system--they must first define a ROOTDIR variable to store the
        path that contains Make.rules. The Make.rules.floor contains 
logical
        defaults for building everything based on the installed floor on 
the
        FEN. Make.rules.ibm contains commands to get the same information
        from the internal build system.

    lib/mpi/Makefile
        This file accommodates the large number of options that must be
        passed to the MPICH2 configure. Unlike the DCMF and CCMI parts,
        MPICH2 is a cross-platform system that has no concept of the BG/P
        install layout. Obviously MPICH2 can be configured on it's own, 
but
        it's quite hard to get the options correct.

  Make targets
    The build system is designed to detect the presence or lack of the IBM
    XL compiler suite. To force the build system to avoid XL, add "XL=" to
    your make command.

    default & install
        This is the default, and builds everything below except for 
"tests".

    all This builds everything including "tests".

    docs
        DCMF, CCMI, and the DCMF MPID device in MPICH2 all contain 
extensive
        documentation. This rule builds and installs it.

    dcmf[-fast]
        These are two different versions of the DCMF library. The -fast
        version is build without asset macros.

    ccmi[-fast]
        Again, two versions of the CCMI library. The -fast version is
        compiled by the IBM XL compilers without assert macros. It is not
        known if it is actually faster.

    mpi This simply runs the makefile in lib/mpi/.

    ga  Like mpi, this simply runs the makefile in lib/ga/.

    tests
        This builds the tests in sys/tests/.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alcf.anl.gov/pipermail/dcmf/attachments/20080206/9030a086/attachment.htm>


More information about the dcmf mailing list