Building DCMF for Linux

From Dcmf

Jump to: navigation, search

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
  1. 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)
  1. Setup DCMF build for "native" environment:
               cd .../comm
               ln -sf Make.rules.native Make.rules
  1. Autoconf DCMF:
               cd .../comm
               make autoconf
  1. 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.

Personal tools