Skip to content

mchaarawi/mpich

 
 

Repository files navigation

			MPICH Release %VERSION%

MPICH is a high-performance and widely portable implementation of the
MPI-3.1 standard from the Argonne National Laboratory.  This release
has all MPI 3.1 functions and features required by the standard with
the exception of support for the "external32" portable I/O format and
user-defined data representations for I/O.

This README file should contain enough information to get you started
with MPICH. More extensive installation and user guides can be found
in the doc/installguide/install.pdf and doc/userguide/user.pdf files
respectively. Additional information regarding the contents of the
release can be found in the CHANGES file in the top-level directory,
and in the RELEASE_NOTES file, where certain restrictions are
detailed. Finally, the MPICH web site, http://www.mpich.org, contains
information on bug fixes and new releases.


1.  Getting Started
2.  Reporting Installation or Usage Problems
3.  Compiler Flags
4.  Alternate Channels and Devices
5.  Alternate Process Managers
6.  Alternate Configure Options
7.  Testing the MPICH installation
8.  Fault Tolerance
9.  Developer Builds
10. Multiple Fortran compiler support
11. ABI Compatibility
12. Capability Sets
13. Threads


-------------------------------------------------------------------------

1. Getting Started
==================

The following instructions take you through a sequence of steps to get
the default configuration (ch3 device, nemesis channel (with TCP and
shared memory), Hydra process management) of MPICH up and running.

(a) You will need the following prerequisites.

    - REQUIRED: This tar file mpich-%VERSION%.tar.gz

    - REQUIRED: A C compiler (gcc is sufficient)

    - OPTIONAL: A C++ compiler, if C++ applications are to be used
      (g++, etc.). If you do not require support for C++ applications,
      you can disable this support using the configure option
      --disable-cxx (configuring MPICH is described in step 1(d)
      below).

    - OPTIONAL: A Fortran compiler, if Fortran applications are to be
      used (gfortran, ifort, etc.). If you do not require support for
      Fortran applications, you can disable this support using
      --disable-fortran (configuring MPICH is described in step 1(d)
      below).

    Also, you need to know what shell you are using since different shell
    has different command syntax. Command "echo $SHELL" prints out the
    current shell used by your terminal program.

(b) Unpack the tar file and go to the top level directory:

      tar xzf mpich-%VERSION%.tar.gz
      cd mpich-%VERSION%

    If your tar doesn't accept the z option, use

      gunzip mpich-%VERSION%.tar.gz
      tar xf mpich-%VERSION%.tar
      cd mpich-%VERSION%

(c) Choose an installation directory, say
    /home/<USERNAME>/mpich-install, which is assumed to non-existent
    or empty. It will be most convenient if this directory is shared
    by all of the machines where you intend to run processes. If not,
    you will have to duplicate it on the other machines after
    installation.

(d) Configure MPICH specifying the installation directory:

    for csh and tcsh:

      ./configure --prefix=/home/<USERNAME>/mpich-install |& tee c.txt

    for bash and sh:

      ./configure --prefix=/home/<USERNAME>/mpich-install 2>&1 | tee c.txt

    Bourne-like shells, sh and bash, accept "2>&1 |".  Csh-like shell,
    csh and tcsh, accept "|&". If a failure occurs, the configure
    command will display the error. Most errors are straight-forward
    to follow. For example, if the configure command fails with:

       "No Fortran compiler found. If you don't need to build any
        Fortran programs, you can disable Fortran support using
        --disable-fortran. If you do want to build Fortran programs,
        you need to install a Fortran compiler such as gfortran or
        ifort before you can proceed."

    ... it means that you don't have a Fortran compiler :-). You will
    need to either install one, or disable Fortran support in MPICH.

    If you are unable to understand what went wrong, please go to step
    (2) below, for reporting the issue to the MPICH developers and
    other users.

(e) Build MPICH:

    for csh and tcsh:

      make |& tee m.txt

    for bash and sh:

      make 2>&1 | tee m.txt

    This step should succeed if there were no problems with the
    preceding step. Check file m.txt. If there were problems, do a
    "make clean" and then run make again with V=1.

      make V=1 |& tee m.txt       (for csh and tcsh)

      OR

      make V=1 2>&1 | tee m.txt   (for bash and sh)

    Then go to step (2) below, for reporting the issue to the MPICH
    developers and other users.

(f) Install the MPICH commands:

    for csh and tcsh:

      make install |& tee mi.txt

    for bash and sh:

      make install 2>&1 | tee mi.txt

    This step collects all required executables and scripts in the bin
    subdirectory of the directory specified by the prefix argument to
    configure.

(g) Add the bin subdirectory of the installation directory to your
    path in your startup script (.bashrc for bash, .cshrc for csh,
    etc.):

    for csh and tcsh:

      setenv PATH /home/<USERNAME>/mpich-install/bin:$PATH

    for bash and sh:
  
      PATH=/home/<USERNAME>/mpich-install/bin:$PATH ; export PATH

    Check that everything is in order at this point by doing:

      which mpicc
      which mpiexec

    These commands should display the path to your bin subdirectory of
    your install directory.

    IMPORTANT NOTE: The install directory has to be visible at exactly
    the same path on all machines you want to run your applications
    on. This is typically achieved by installing MPICH on a shared
    NFS file-system. If you do not have a shared NFS directory, you
    will need to manually copy the install directory to all machines
    at exactly the same location.

(h) MPICH uses a process manager for starting MPI applications. The
    process manager provides the "mpiexec" executable, together with
    other utility executables. MPICH comes packaged with multiple
    process managers; the default is called Hydra.

    Now we will run an MPI job, using the mpiexec command as specified
    in the MPI standard. There are some examples in the install
    directory, which you have already put in your path, as well as in
    the directory mpich-%VERSION%/examples. One of them is the classic
    CPI example, which computes the value of pi by numerical
    integration in parallel.

    To run the CPI example with 'n' processes on your local machine,
    you can use:

      mpiexec -n <number> ./examples/cpi

    Test that you can run an 'n' process CPI job on multiple nodes:

      mpiexec -f machinefile -n <number> ./examples/cpi

    The 'machinefile' is of the form:

      host1
      host2:2
      host3:4   # Random comments
      host4:1

    'host1', 'host2', 'host3' and 'host4' are the hostnames of the
    machines you want to run the job on. The ':2', ':4', ':1' segments
    depict the number of processes you want to run on each node. If
    nothing is specified, ':1' is assumed.

    More details on interacting with Hydra can be found at
    http://wiki.mpich.org/mpich/index.php/Using_the_Hydra_Process_Manager

If you have completed all of the above steps, you have successfully
installed MPICH and run an MPI example.

-------------------------------------------------------------------------

2. Reporting Installation or Usage Problems
===========================================

[VERY IMPORTANT: PLEASE COMPRESS ALL FILES BEFORE SENDING THEM TO
US. DO NOT SPAM THE MAILING LIST WITH LARGE ATTACHMENTS.]

The distribution has been tested by us on a variety of machines in our
environments as well as our partner institutes. If you have problems
with the installation or usage of MPICH, please follow these steps:

1. First see the Frequently Asked Questions (FAQ) page at
http://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions to
see if the problem you are facing has a simple solution. Many common
problems and their solutions are listed here.

2. If you cannot find an answer on the FAQ page, look through previous
email threads on the discuss@mpich.org mailing list archive
(https://lists.mpich.org/mailman/listinfo/discuss). It is likely
someone else had a similar problem, which has already been resolved
before.

3. If neither of the above steps work, please send an email to
discuss@mpich.org. You need to subscribe to this list
(https://lists.mpich.org/mailman/listinfo/discuss) before sending an
email.

Your email should contain the following files.  ONCE AGAIN, PLEASE
COMPRESS BEFORE SENDING, AS THE FILES CAN BE LARGE.  Note that,
depending on which step the build failed, some of the files might not
exist.

    mpich-%VERSION%/c.txt (generated in step 1(d) above)
    mpich-%VERSION%/m.txt (generated in step 1(e) above)
    mpich-%VERSION%/mi.txt (generated in step 1(f) above)
    mpich-%VERSION%/config.log (generated in step 1(d) above)
    mpich-%VERSION%/src/openpa/config.log (generated in step 1(d) above)
    mpich-%VERSION%/src/mpl/config.log (generated in step 1(d) above)
    mpich-%VERSION%/src/pm/hydra/config.log (generated in step 1(d) above)
    mpich-%VERSION%/src/pm/hydra/tools/topo/hwloc/hwloc/config.log (generated in step 1(d) above)

    DID WE MENTION? DO NOT FORGET TO COMPRESS THESE FILES!

If you have compiled MPICH and are having trouble running an
application, please provide the output of the following command in
your