Special Notes when Configuring mpich for Networks of Workstations


Up: Configuring mpich Next: Building a production mpich Previous: Configuring mpich

While the default options are often adequate, the recommendations of this section may help mpich make better use of the specific facilities provided by these systems.

Compaq/DEC Alpha
If all of your workstations are from Compaq/DEC, you may want to use Compaq/DEC's own MPI. If you are using mpich, in order to get the full advantages of ANSI C, you may need to add -cflags="-std". For strict ANSI C, use -cflags="-std1".

FreeBSD
For a network of PC's running the FreeBSD version of Unix:
    configure --with-device=ch_p4 -arch=freebsd 

Fujitsu
For a network of Fujitsu M780s running UXP/M, the following options have been tested:
    setenv FC frt 

    configure -arch=UXPM --with-device=ch_p4 -fflags="-Oe,-Uep -Eml -Aabe" \ 
        -mpe -mpedbg -prefix=/usr/local/mpi \ 
        -tcldir=/usr/local -tkdir=/usr/local -wish=/usr/local/bin/wish 

Globus2 device
Before configuring for the globus2 device, a version of Globus must already be installed*. You will need to know the directory where Globus is installed (e.g., /usr/local/globus). Set the environment GLOBUS_INSTALL_PATH to that directory, for example,

setenv GLOBUS_INSTALL_PATH /usr/local/globus

When configuring for the globus2 device, you may specify one of the Globus flavors (e.g., mpi, debug or nodebug, threads, 32- or 64-bit, etc.). To see the complete list of all Globus flavors (not all may be installed on your machine) use

$GLOBUS_INSTALL_PATH/bin/globus-development-path -help

The flavors that are available to you (i.e., installed on your machine) are enumerated as directories in $GLOBUS_INSTALL_PATH/development. For example, Globus installation on a Solaris workstation might have the following flavors:


sparc-sun-solaris2.7_nothreads_standard_debug/ 

sparc-sun-solaris2.7_pthreads_standard_debug/ 

sparc-sun-solaris2.7_solaristhreads_standard_debug/ 

There are two ways to configure for the globus2 device. Each method selects one of the Globus flavor directories in $GLOBUS_INSTALL_PATH/development. The first method is to specify the flavor directory explicitly, for example:

configure -device=globus2:-dir=$GLOBUS_INSTALL_PATH/development/sparc-sun-solaris2.7_nothreads_standard_debug

Optionally, you may specify the flavor directory implicitly,

configure -device=globus2:-flavor=nothreads,debug

Finally, you may simply choose the default flavor (returned by $GLOBUS_INSTALL_PATH/bin/globus-development-path)

configure -device=globus2

You must specify -mpi to enable vendor-supplied MPI communication for intra-machine messaging. In other words, when configuring on machines that provide vendor implementations of the MPI standard, you must specify -mpi for optimal performance. Failing to specify -mpi will result in TCP intra-machine communication.

Selecting -debug can be helpful during debugging, but can slow down performance. -nodebug should be used for debugged production code.

In general, -nothreads should be used (the Globus2 device is not multithreaded). You should select a threaded flavor only if you intend to link your MPI application with other modules that require a threaded version of Globus (e.g., you have written a library that uses Nexus that requires threaded handlers). You should not select a threaded version of Globus simply because your MPI application is multithreaded.

When Globus was alled, a special Makefile was automatically generated just for mpich. The mpich configure uses that file when configuring for the globus2 device. That special Makefile contains virtually all the information mpich configure needs (include directory paths, special libaries, the names of C and Fortran compiler and linkers, etc.).

HP HPUX
For a network of HP's, including the mpe library but leaving out of it the MPE X graphics routines:
    configure --with-device=ch_p4 -arch=hpux -mpe -no_mpegraphics 

IBM RS6000
In order to get the full advantages of ANSI C, you may need to add -cflags="-qlanglvl=ansi". Currently, mpich has not been tested with 64 bit mode on RS6000 workstations; previous versions of mpich, when using the ch_mpl or ch_p4 devices, have had problems with 64-bit AIX ( mpich works with other 64-bit operating systems*.)

LINUX
The ch_p4 device will be chosen by default. Using shared memory with -comm=shared is supported as of mpich version 1.2.0 through Unix System V IPC's. Use of mmap is not supported, as LINUX does no support the use of MAP_SHARED with MAP_ANONYMOUS. Because the System V IPC's cannot (by design) reliably be freed by an application when it is done with them, you may want to use the cleanipcs command provided with mpich.

NEC SX-4
For an NEC SX-4 shared-memory vector multiprocessor, use
    configure --with-device=ch_lfshmem 

to get the lock-free shared-memory device described in [10]. Note that this device requires special assembly-language code and/or compiler options in order to operate reliably.

SGI

    configure --with-device=ch_p4 

Some SGI systems support both 32 and 64 bit pointers (addresses). Mpich uses the architecture IRIX to refer to 32 bit systems and IRIX64 for 64 bit systems. Mpich will attempt to detect the appropriate architecture automatically, but you can force a choice by specifying the architecture with the configure options -arch=IRIX, -arch=IRIXN32, -arch=IRIX32, or -arch=IRIX64. The last three of these correspond to the SGI compiler options -n32, -32, and -64. Make sure to attach the flags to the compilers and linker as follows:


    configure -cc='cc -64' -fc='f77 -64'  .... 

SGI multiprocessor
(such as an Onyx, Challenge, or Power Challenge), using the shared memory for fast message-passing
    configure --with-device=ch_p4 -comm=shared 

Use -arch=IRIX to force 32 bit pointers and -arch=IRIX64 to force 64 bit pointers.

SGI Origin
On the SGI Origin machines, it is better to let configure choose the architecture. Make sure to attach the flags to the compilers and linker as follows:


    configure -cc='cc -64' -fc='f77 -64'  .... 

Sun SunOS

    configure --with-device=ch_p4 -arch=sun4 

Mpich now requires a compiler that supports ANSI C prototypes. The old SunOS bundled C compiler does not support prototypes. If you need a compiler that supports prototypes, we recommend the GNU C compiler (gcc).

Sun Solaris

    configure --with-device=ch_p4 -arch=solaris 

DEC Alpha

    configure --with-device=ch_p4 -arch=alpha 


Mpich can be run on a heterogeneous network of workstations of various kinds. For simple collections of workstations, the mpirun command can be used; more complex collections of heterogeneous machines require a p4 ``procgroup file'' (for the ch_p4 device) or a ``RSL file'' (for the globus2 device). The format of the ``procgroup'' file is described in Section Special Considerations for Running on a Network of Workstations . The format of ``RSL files'' can be found in the Globus documentation found at http://www.globus.org under the Resource Specification Language.

The ch_p4 device is most easily used when all workstations share a common filesystem. MPI executables should reside in the shared file system. However, a shared file system is not necessary. By using the ``procgroup'' file, the location of the executable on each workstation can be specified as a different location.



Up: Configuring mpich Next: Building a production mpich Previous: Configuring mpich