MPICH2 Home Page
News
Download
MPICH2 FAQ
Documentation
License
Information for Developers
Student Projects
Bug Reports
ANL's MPI Page
MPI Forum

MPICH1 Home Page

Information for Developers

Getting and building MPICH2
  • Checking out the MPICH2 source
  • Setting up the build environment
  • Coding Standards for MPICH2
  • Enabling automatic handling of file dependencies
  • Updated derived files such as configure
  • Using CVS branches to manage patches and code development
  • Testing MPICH
  • MPICH2 Status and ToDo List
  • Using the MPI test suites with MPICH2
  • Details on using the test suites
  • Changing the default tests
  • Location of test output
  • Running the special tests
  • Running the tests of configure options
  • Running the coding checks
  • Running the global sysmbol checks
  • Running and understanding the coverage tests
  • Writing New Tests
  • Running Tests on Remote Machines
  • Description of MPICH group machine zoo
  • Interfacing to MPICH2
    This section contains information on interfacing to MPICH2, either with external tools such as debuggers and process managers, or by replacing functions within the MPI implmentation, such as specifying a different implementation of an MPI collective operation.
  • Debugger Interface Overview (coming soon)
  • Support for Message Queue Access from within a Debugger
  • Replacing collective routines
  • Replacing topology routines (coming soon)
  • Using other process managers with MPICH2 (incomplete)
  • Miscellaneous
  • Fixing Bugs in the Current Release
  • Rules for Installation Targets
  • Updating the error messages
  • Creating a Release
  • Updating the MPICH2 Web Pages
  • Updating the MPICH2 FAQ
  • Design Documents
  • Possible extensions to mpiexec, such as a standard set of command-line options for environment variables and support for multithreaded applications.
  • Checking out the MPICH2 source

    To checkout a new copy of the MPICH2 source on systems with access to the MCS filesystems, use
        cvs -d /home/MPI/cvsMaster co mpich2all
    
    (If you have trouble with the confdb module within MPICH2, checkout mpich2allnoconfdb instead of mpich2all). From external sites (including machines within MCS that do not mount the division file systems), use
        setenv CVS_RSH ssh
        cvs -d :ext:shakey:/home/MPI/cvsMaster co mpich2all
    
    To checkout a particular release, specify the release name on the checkout:
        cvs -d /home/MPI/cvsMaster co -r MPICH2_1_0 mpich2all
    
    Note that checking out a particular release name creates a branch (see Managing and Using Branches).

    Setting up the build environment

    The CVS repository does not contain any of the "derived" files, including the configure scripts and the C++ and Fortran 77 language bindings. To build these, run
        maint/updatefiles
    
    Occasionally changes are made to the autoconf macros that are not detected by the dependency tests for the configure scripts. It is always correct to delete all of the configure scripts before running maint/updatefiles:
        find . -name configure -print | xargs rm
        maint/updatefiles
    
    The autoconf macros and the configure.in scripts now require autoconf version 2.59. This was done because there are incompatible differences between each minor release of autoconf (even the allowed command line arguments has changed between 2.50 and 2.58).

    You can select a particular version of autoconf and autoheader by using the environment variables AUTOCONF and AUTOHEADER respectively. maint/updatefiles will use these if they are set.

    Enabling automatic handling of file dependencies

    Under certain circumstances, the build system will automatically maintain dependency information, ensuring that changes to a header file, for example, forces the recompilation of all files that include that header file. The requirements are
    • The C compiler is gcc, and
    • Dependencies are enabled when simplemake was run by maint/updatefiles (this is the default for the development version but not the a release distribution).
    To enable the dependencies, simply run
        make dependencies
    
    after the configure step. This will enable dependency handling for the parts of MPICH2 that use simplemake (e.g., src/mpi, src/mpid, and some parts of src/util). Other parts of MPICH2, such as ROMIO, do not currently support automatic dependency handling.

    Updated derived files such as configure

    If you change one of the files that is the source for a derived file, such as a configure.in file, you will need to rebuild the derived file (e.g., the corresponding configure file). The safest way to do this is to rerun updatefiles:
         maint/updatefiles
    
    (from the top-level MPICH2 directory). However, this can take a fair amount of time. You can direct updatefiles to only update certain classes of files. For example, to update all configure files, use
        maint/updatefiles -do=build_configure
    
    You can use multiple -do arguments. For example, to rebuild the Makefile.in files and the configure files, use
        maint/updatefiles -do=build_configure -do=makefiles
    
    Check the source of maint/updatefiles to see what other options are available for -do.

    Updating the MPICH2 Web Pages

    The MPICH2 web site is managed under CVS. To update the web site, first checkout the mpich2-web module:
       cvs -d /home/MPI/cvsMaster co mpich2-web
    
    To maintain a uniform look to the web pages, including the menu sidebars, each web page is created from a text file. For example, the main page is created from m.txt. This page created from developer.txt. To make the web pages, simply execute make. To test the pages, use
        make test-pages
    
    which will install the pages into the directory testhome. To install the pages into the MCS web site, use
        make install
    
    To add a new page, look at the Makefile and add the necessary commands. Make sure that the DIRS and MAINPAGES variables list the source directory and files.

    Updating the MPICH2 FAQ Pages

    The MPICH2 FAQ is maintained from a single file, faq.txt, in the directory mpich2/docs/faq. This source file uses a simplified form of LaTeX for formatting; the script faqbuild, which is run by using make in the docs/faq directory, will build three forms of the FAQ:
    HTML
    A single file, faq.htm, which is copied to the MPICH2 web site with make install-web
    Text
    A collection of files, all with extension .txt, that contain one FAQ item. These may be used with the REQ system
    LaTeX
    A single file, faq.tex, which is normally processed to produce a PDF file.
    MCS Division Argonne National Laboratory University of Chicago


    Last modified Tue Sep 4 15:24:11 2007