$Header: /cvsroot/nco/nco/doc/mpi.txt,v 1.19 2009/01/13 23:17:13 zender Exp $ -*-text-*-

Installing an MPI Environment for NCO:

Choose an MPI distribution: LAM-MPI (deprecated), MPICH, MPICH2
(recommended), Open MPI, and PPE (AIX only)

MPI distribution-specific instructions are given below, in
alphabetical order of distribution for these parallel environments:
LAM, MPICH, MPICH2, Open MPI, and PPE (AIX only).
Support for Open MPI is new.
No other MPI environments are supported.

Test NCO once one of these environments is installed. 

************************************************************************
Determining the Parallel Environment
************************************************************************
Linux in particular has a large number of available MPI environments.
Determining which environment is active may be necessary.
The active MPI environment provides a C-compiler wrapper (usually
called mpicc) which simplifies building C programs like NCO. 

mpicc --version # LAM, MPICH, MPICH2: C  Compiler/version
mpicxx --version # MPICH2 (only): C++ Compiler/version
mpiCC --version # LAM-MPI, Open MPI: C++ Compiler/version
mpic++ --version # LAM-MPI, Open MPI: C++ Compiler/version
mpicc --showme # LAM-MPI, Open MPI: C   compilation switches
mpiCC --showme # LAM-MPI, Open MPI: C++ compilation switches
mpic++ --showme # LAM-MPI, Open MPI: C++ compilation switches
mpcc -v # PPE (only): C   compilation switches
mpCC -v # PPE (only): C++ compilation switches

************************************************************************
Testing NCO in a parallel environment
************************************************************************
1. Start any required process management daemon
Typically, these are lamd (LAM), mpd (MPICH/MPICH2), and pmd (PPE).
If regression test results are unpredictable and/or terrible, try
re-starting the process management daemon.
   
2. Run NCO regression tests in parallel mode
These two commands are equivalent (Makefile translates the first): 

   make MPI_PRC=3 tst
   ~/nco/bm/nco_bm.pl --dbg=0 --mpi=3 --regress --udp

************************************************************************
MPI Distribution-specific Instructions
************************************************************************
LAM Instructions:
Up-to-date versions of LAM-MPI are distributed in RPM and Deb formats.
(LAM features are included in Open MPI)

0. Remove LAM-MPI packages
   sudo aptitude remove lam4c2 lam4-dev lam-mpidoc lam-runtime
   sudo rpm -e lam
   sudo yum remove lam

1. Install LAM-MPI packages
   sudo aptitude install lam4c2 lam4-dev lam-mpidoc lam-runtime
   sudo rpm -i lam-7.0.6-3.i386.rpm

2. Start lamd if not already running:
   lamboot -v # Start lamd in verbose mode 

3. End lamd
   lamwipe # Kill lamd

************************************************************************
MPICH (version 1, http://www-unix.mcs.anl.gov/mpi/mpich) Instructions:
1. Install MPICH packages
   sudo aptitude install mpich mpich-common
   sudo rpm -i mpich mpich-doc
   sudo yum install mpich mpich-doc
   sudo rpm -i mpich-1.2.5.2-1mdk.i586.rpm

2. Test mpich version:
   mpichversion # Report MPICH1 version and device (ch_p4 indicates GB Ethernet)

************************************************************************
MPICH2 (i.e., MPICH version 2, http://www-unix.mcs.anl.gov/mpi/mpich2) Instructions:
0. Remove MPICH2 packages

   sudo aptitude remove libmpich2-1.0 mpich2-doc mpich2 mpich2-mpd mpich2-dev

1. Install MPICH2 (requires python 2.3 or 2.4)
   wget http://torvalds.cs.mtsu.edu/~zach/debian/1.0.2p1/libmpich2-1.0_1.0.2p1-2_i386.deb
   wget http://torvalds.cs.mtsu.edu/~zach/debian/1.0.2p1/mpich2-doc_1.0.2p1-2_i386.deb
   wget http://torvalds.cs.mtsu.edu/~zach/debian/1.0.2p1/mpich2_1.0.2p1-2_i386.deb
   wget http://torvalds.cs.mtsu.edu/~zach/debian/1.0.2p1/mpich2-mpd_1.0.2p1-2_i386.deb
   wget http://torvalds.cs.mtsu.edu/~zach/debian/1.0.2p1/mpich2-dev_1.0.2p1-2_i386.deb

   sudo aptitude install python2.3 python2.3-xml

   cd ${DATA}/tmp
   sudo dpkg --install \
   libmpich2-1.0_1.0.2p1-2_i386.deb \
   mpich2-doc_1.0.2p1-2_i386.deb \
   mpich2_1.0.2p1-2_i386.deb \
   mpich2-mpd_1.0.2p1-2_i386.deb \
   mpich2-dev_1.0.2p1-2_i386.deb
   cd -

2. Install .mpd.conf in ${HOME} or set START="yes" in /etc/default/mpd

3. Start mpd if not already running:
   mpd & # Start MPD
   mpdtrace # Test MPD
   mpdallexit # Exit MPD
   mpich2version # Report MPICH2 version

************************************************************************
Open MPI Instructions:
Up-to-date versions of LAM-MPI are distributed in RPM and Deb formats.

0. Remove Open MPI packages
   sudo aptitude remove openmpi_bin

1. Install Open MPI packages
   sudo aptitude install openmpi-bin openmpi-doc openmpi-dev

************************************************************************
Parallel Programming Environment (PPE) (AIX only):
1. poe requires a hostfile. hostfile defaults to ./host.list.
   Create host.list with, e.g.,

   echo ${HOST} > ./host.list

2. 

   poe -hostfile=~/nco/bld/host.list -node=1 -tasks_per_node=3 $MY_BIN_DIR/mpncwa -O -D 3 -p ${HOME}/nco/data in.nc ~/foo.nc
