Configure options


Up: Details Next: MPI and PMPI routines Previous: Details

The configure script documents itself in the following way. If you type

    configure -usage 
you will get a complete list of arguments and their meanings; these are also shown in Appendix Configure Usage . The most important options are
{ --prefix=dir}
The installation prefix. configure understands all of the usual GNU installation directory arguments, including --libdir and --mandir. We recommend that all users specify an installation directory with --prefix.

{ --with-device=devname}
Set the mpich device to use. devname must be the name of one of the directories in the mpid directory, such as ch_p4, ch_shmem, globus2, or ch_p4mpd.

{ --enable-g}
Add the -g option to the compile scripts. This is a prerequisite for using most debuggers, including dbx, and gdb.

{ --enable-debug}
Turn on support for the Totalview(c) Debugger. This allows Totalview to display information on message queues.

{ --enable-sharedlib}
Build both static and shared libraries for mpich. This supports only a few systems, including those using gcc (e.g., most Linux Beowulf systems).

{ -automountfix=program}
This is sometimes necessary for systems with automounter problems (see Section Dealing with automounters ).

{ --with-comm=name}
Select a communication option for the device. Currently only for the ch_p4 device; the values shared (for SMP nodes) and bproc (for Scyld) are supported.

{ -rsh=commandname}
Set the name of the program used to start remote processes. Only the ch_p4 device uses this, and if no name is provided, configure will attempt to determine the appropropriate program. This usage is deprecated; instead, use the environment variable RSHCOMMAND.


In addition, configure makes use of environment variables such as MAKE, CC, FC, CFLAGS, and FFLAGS.

Normally, you should use configure with as few arguments as you can. If you leave all arguments off, configure will usually guess the correct architecture (arch) unless you are in a cross-compiling environment, and will usually choose an appropriate device (device) as well. Where TCP/IP is an appropriate mechanism for communication, the TCP device (ch_p4) will be chosen by default.



Up: Details Next: MPI and PMPI routines Previous: Details


MPI and PMPI routines


Up: Configure options Next: Configuring mpich for use with threads Previous: Configure options

The MPI standard requires that each routine be available with both the MPI and PMPI prefix; for example, MPI_Send and PMPI_Send. Mpich attempts to use weak symbols to provide this feature; this reduces the size of the mpich library. You can force mpich to make separate libraries for the MPI and PMPI versions by adding the configure option --disable-weak-symbols:

   configure --disable-weak-symbols ... 
Some MPI routines are implemented in terms of other MPI routines. For example, in mpich, MPI_Bcast is implemented using MPI_Send. When weak symbols are used, even the PMPI versions of the routines are implemented using the MPI (not PMPI) versions. If you want the PMPI routines to only use the PMPI routines, use --disable-weak-symbols when configuring mpich. Note that this behavior may change in later releases.



Up: Configure options Next: Configuring mpich for use with threads Previous: Configure options


Configuring mpich for use with threads


Up: Configure options Next: Signals Previous: MPI and PMPI routines

The mpich implementation of MPI is currently not threadsafe. It may, however, be possible to use mpich in a threaded application as long as all mpich calls are made by a single thread. An example of this is OpenMP used for loop parallelism, combined with MPI. However, you may run into some problems with signals. Many thread packages make use of signals such as SIGUSR1 and/or SIGUSR2. By default, the ch_p4 device uses SIGUSR1. If you are using mpich with a thread package that uses SIGUSR1, you will need to reconfigure, adding the argument -listenersig=SIGNAL NAME to the --with-device=ch_p4 line and rebuild mpich. For example,

    ./configure --with-device=ch_p4:-listenersig=SIGUSR2 
    make 



Up: Configure options Next: Signals Previous: MPI and PMPI routines


Signals


Up: Configure options Next: Workstation Networks with the ch_p4 device Previous: Configuring mpich for use with threads

In general, users should avoid using signals with MPI programs. The manual page for MPI_Init describes the signals that are used by the MPI implementation; these should not be changed by the user.

Because Unix does not chain signals, there is the possibility that several packages will attempt to use the same signal, causing the program to fail. For example, by default, the ch_p4 device uses SIGUSR1; some thread packages also use SIGUSR1.

In a few cases, you can change the signal before calling MPI_Init. In those cases, your signal handler will be called after the mpich implementation acts on the signal. For example, if you want to change the behavior of SIGSEGV to print a message, you can establish such a signal handler before calling MPI_Init. With devices such as the ch_p4 device that handle SIGSEGV, this will cause your signal handler to be called after mpich processes it.



Up: Configure options Next: Workstation Networks with the ch_p4 device Previous: Configuring mpich for use with threads