MPICH2

From CBLFS
Revision as of 21:12, 6 November 2007 by Weibullguy (talk | contribs) (Added page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
Download Source: http://www-unix.mcs.anl.gov/mpi/mpich/downloads/mpich2-1.0.6p1.tar.gz

Introduction to MPICH2

MPICH2 is an implementation of the Message-Passing Interface (MPI) version 2.

Project Homepage: http://www-unix.mcs.anl.gov/mpi/mpich/

Configuration Information

--with-pm=<PROCESS MANAGER>: Determines which process manager(s) are built where <PROCESS MANAGER> is a colon-separated list of mpd, smpd, or gforker. See the documentation for a discussion of each process manager.
--with-device=<SOCKET>: Selects sockets for interprocess communications where <SOCKET> is one of ch3:sock, ch3:ssm, ch3:shm, or ch3:nemesis. See the documentation for a discussion of each socket type.
Caution.png

Note

Each implementation of MPI (e.g., MPICH2 or OpenMPI) installs certain binaries that have the same name. Subsequent installations will overwrite previous installation. If you plan to use multiple implmentations of MPI, it's recommended that you install each in a separate directory structure such as /opt/mpich2 and /opt/openmpi.

Non-Multilib

Compile the package:

./configure --prefix=/usr --sysconfdir=/etc/mpich2 \
--enable-sharedlibs=gcc --with-pm=mpd:gforker --enable-f90 \
--enable-cxx --with-mpe  --with-device=ch3:sock \
--with-htmldir=/opt/mpich2/doc/html --mandir=/usr/share/man &&
make

Install the package:

make install
make install-examples
mv -v /usr/lib/mpich2-ch3.pc /usr/lib/pkgconfig

Multilib

32Bit

Compile the package:

CC="gcc ${BUILD32}"  CXX="g++ ${BUILD32}" ./configure --prefix=/usr --sysconfdir=/etc/mpich2 \
--enable-sharedlibs=gcc --with-pm=mpd:gforker --enable-f90 \
--enable-cxx --with-mpe  --with-device=ch3:sock \
--with-htmldir=/opt/mpich2/doc/html --mandir=/usr/share/man &&
make

Install the package:

make install
make install-examples
mv -v /usr/lib/mpich2-ch3.pc /usr/lib/pkgconfig

N32

Compile the package:

CC="gcc ${BUILDN32}"  CXX="g++ ${BUILDN32}" ./configure --prefix=/usr --libdir=/usr/lib32 \
--sysconfdir=/etc/mpich2 --enable-sharedlibs=gcc --with-pm=mpd:gforker \ 
--enable-f90 --enable-cxx --with-mpe  --with-device=ch3:sock \
--with-htmldir=/opt/mpich2/doc/html --mandir=/usr/share/man &&
make

Install the package:

make install
make install-examples
mv -v /usr/lib32/mpich2-ch3.pc /usr/lib32/pkgconfig

64Bit

Compile the package:

CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" ./configure --prefix=/usr --libdir=/usr/lib64 \
--sysconfdir=/etc/mpich2 --enable-sharedlibs=gcc --with-pm=mpd:gforker \ 
--enable-f90 --enable-cxx --with-mpe  --with-device=ch3:sock \
--with-htmldir=/opt/mpich2/doc/html --mandir=/usr/share/man &&
make

Install the package:

make install
make install-examples
mv -v /usr/lib64/mpich2-ch3.pc /usr/lib64/pkgconfig

Configuring

The process manager requires a secret word to execute. Don't use your login password!! You can change the secret word below to something you like better.

Process Manager

Set the secret word system-wide (required to run process managers as root):

echo MPD_SECRETWORD=weibullguyiscool > /etc/mpd.conf
chmod 600 /etc/mpd.conf

Set the secret word for an unprivileged user.

echo MPD_SECRETWORD=weibullguyiscool > $HOME/.mpd.conf
chmod 600 $HOME/.mpd.conf

Bootscript

Create a boot script to start the MPICH2 process manager on the node. This is only necessary if you want to bring up the cluster services automatically.

cat > /etc/rc.d/init.d/mpd << "EOF"
#!/bin/sh
# Begin $rc_base/init.d/mpd
#
# Based on sysklogd script from LFS-3.1 and earlier.
# Written by Andrew "Weibullguy" Rowland <darowland@ieee.org>
#
# Date: 2007-10-21 22:22:16

. /etc/sysconfig/rc
. $rc_functions

# Read in the command arguments
case "$1" in
   start)
       boot_mesg "Starting MPICH2 Process Manager..."
       loadproc /usr/sbin/mpd
       ;;
   stop)
       boot_mesg "Stopping MPICH2 Process Manager ..."
       killproc mpd
       ;;
   restart)
       $0 stop
       $0 start
       ;;
   status)
       statusproc /usr/sbin/mpd
       ;;
   *)
       echo "Usage: $0 {start|stop|restart|status}"
       exit 1
esac

exit 0

# End $rc_base/init.d/mpd
EOF

Link the bootscript into the appropriate run levels.

ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc0.d/K10mpd
ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc1.d/K10mpd
ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc2.d/K10mpd
ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc3.d/S99mpd
ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc4.d/S99mpd
ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc5.d/S99mpd
ln -sf  ../init.d/mpd ${EXTDIR}/rc.d/rc6.d/K10mpd

Test Suite

Now that MPICH2 is installed, start the process manager and run the test suite. The results are output to an XML file that can be viewed in your web browser. MPICH2 comes with a stylesheet for rendering the XML test results.

mpd &
make testing
mkdir ../mpich2_test_results
cp -v test/TestResults.xsl ../mpich2_test_results
cp -v test/mpi/summary.xml ../mpich2_test_results
firefox ../mpich2_test_results/summary.xml

Create a boot script to start the MPICH2 process manager on the node. This is only necessary if you want to bring up the cluster services automatically.

Contents

Installed Directories: None
Installed Programs: mpd, mpdboot, mpdallexit, mpiexec, mpirun, mpicc, mpicxx, mpif90
Installed Libraries: libmpich.{a,so}, libmpichcxx.{a,so}, libmpichf90.{a,so}, libmpe.a

Short Descriptions