Building DCMF for Linux
From Dcmf
Prerequisites:
1. DCMF tarball, or other packaging of DCMF source code *
2. mpich2 tarball as required for above
3. ARMCI/GA tarball ()
* Requires new version, includes support for linux/sockets building and also new patches for mpich2 and GA/ARMCI.
Building:
In the following, "..." refers to an arbitrary directory or path, created by the user to separate this build from other work.
NOTE: it is advisable to use the default location for the mpich2 and GA/ARMCI tarballs, since modifying makefiles or manually configuring only complicates the process. Have someone with administrator priviledges setup a /bgsys/downloads/comm directory with the mpich2 and GA/ARMCI tarballs installed there. Currently, the following versions are expected/required:
ga-4-0-8.tgz
mpich2-1.0.7.tar.gz
- Unpack software in appropriate places:
.../comm DCMF software
/bgsys/downloads/comm (or path you've setup)
mpich2 and GA/ARMCI tarballs, not unpacked
(still in zgip'ed TAR format)
- Setup DCMF build for "native" environment:
cd .../comm
ln -sf Make.rules.native Make.rules
- Autoconf DCMF:
cd .../comm
make autoconf
- Build sockets version of DCMF, using tarballs in default path):
cd .../comm
make lib_socket
or with custom path for tarballs:
TARBALL_DIRECTORY=/path/to/downloads make lib_socket
This produces "install" images in .../work-socket/comm
bin/mpd (et al.) Process manager, mpich2's MPD (actually, symlinks)
bin/mpicc (et al.) Compiler wrapper scripts for producing applications ()
include/* Header files needed to compile applications ()
lib/* Libraries needed to build (run) applications ()
NOTE: applications are built/run with dynamic shared libraries. Compiler wrapper scripts add include directory and lib directory/names to compile commandlines and runtime path.
Starting process manager:
(from a convenient cwd)
.../work-socket/comm/bin/mpd --daemon --pid=mpd.pid
Running an application (example for 2-node run):
(from a convenient cwd)
.../work-socket/comm/bin/mpiexec -np 2 /path/to/apps/program
Compiling mpich2's testsuite:
cd .../comm/build/mpich2/dcmf-socket/test/mpi
COMPILEONLY=1 STAGINGDIR=/path/to/apps make testing
Running mpich2's testsuite:
cd .../comm/build/mpich2/dcmf-socket/test/mpi
RUNONLY=1 STAGINGDIR=/path/to/apps make testrun ROPTS="-mpiexec=.../work-socket/comm/bin/mpiexec"
NOTE: the above depends on some extensions to mpich2 testsuite scripts, which should be part of the patches applied when building.
