Changes between Version 36 and Version 37 of babelbgp


Ignore:
Timestamp:
10/16/09 15:01:15 (13 years ago)
Author:
tramer
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • babelbgp

    v36 v37  
    33==== Current build instructions (Notes by Stephen Tramer [mailto:[email protected]]) ==== 
    44 
    5 It is strongly recommended that you make a directory on /scratch to perform your build in.  Boyana mentions in her notes below that configure/make takes a long time; this is because of the slow disk access to $HOME on login nodes for surveyor.  Configure and builds proceed much faster on /scratch. 
     5It is strongly recommended that you make a directory on /scratch to perform your build in.  Boyana mentions in her notes below that configure/make takes a long time; this is because of the slow disk access to $HOME on login nodes for surveyor.  Configure and builds proceed much faster on /scratch.  '''However, note that you cannot run the regression tests from /scratch.'''  This is because /scratch is specific to each login node, and is not mounted for any BG/P nodes. 
    66 
    77These notes very closely follow Boyana's, but some of her fixes have now been patched into the code.  For the full details of what has been modified in order to support BG/P, please see below. 
     
    99These instructions will enable support for all languages except java (irrelevant on BG/P, since it doesn't have java).  Throughout $BABEL_SRC will refer to your local babel source copy and $BABEL_INSTALL to the directory where babel will be installed.  Please be aware that this build process has been tested only in the development branch, for the proposed babel 1.5.0. 
    1010 
    11 1. Build a local version of libxml2 (if you want).  There is a version available at /home/tramer/libxml-bgp, compiled for use with applications being compiled for BG/P.  However, it is recommended that you roll your own to become familiar with some issues with cross-compiling using the GNU autotools.  However, if you do this, you will need to run the $BABEL_SRC/contrb/libtool_fix.sh script to patch up the generated libtool files, and be aware that you will need to use the '-qnostaticlink' LDFLAG setting. 
     111. Build a local version of libxml2 (if you want) and also libtool (if you like).  There are versions available at /home/tramer/libxml2-bgp and /home/tramer/libtool-dev-bgp respectively, compiled for use with applications being compiled for BG/P.  However, it is recommended that you roll your own to become familiar with some issues with cross-compiling using the GNU autotools.  See Boyana's instructions below for libxml2; for libtool you will need to run 'make' first and ''then'' the libtool_fix.sh script. 
    1212 
    13132. Configure the project: 
    1414 
    1515{{{ 
    16 $BABEL_SRC/configure CPP="gcc -E" CC=mpixlc CXX=mpixlcxx FC=mpixlf2003 F77=mpixlf77 --with-bindc --prefix=$BABEL_INSTALL \ 
    17   --host=powerpc-bgp-linux-gnu --target=powerpc64-ibm-bgp --without-sidlx --with-gcc=no \ 
    18   --enable-python=/bgsys/drivers/ppcfloor/gnu-linux/bin/python target_alias=powerpc64-ibm-bgp \ 
    19   --with-libxml2=$LIBXML2_LOCATION --without-libparsifal LDFLAGS="-G -qnostaticlink" host_alias=powerpc-bgp-linux-gnu 
    20 }}} 
     16$BABEL_SRC/configure CC=bgxlc CXX=bgxlC FC=bgxlf90 F77=bgxlf --prefix=$BABEL_INSTALL_DIR --host=powerpc-bgp-linux-gnu \ 
     17  --without-sidlx --with-gcc=no --enable-python=/bgsys/drivers/ppcfloor/gnu-linux/bin/python \ 
     18  --with-libxml2=$LIBXML2_DIR LDFLAGS=-qnostaticlink --enable-shared --disable-static \ 
     19  host_alias=powerpc-bgp-linux-gnu --target=powerpc64-ibm-bgp --with-ltdl-lib=$LIBTOOL_DIR/lib \ 
     20  --with-ltdl-include=$LIBTOOL_DIR/include --without-libparsifal --disable-fortran90 
     21}}} 
     22 
     23You may also use the mpixl* compilers if you wish.  However since babel does not use MPI, this is not necessary.  Currently --disable-fortran90 is only needed because struct support is currently broken in babel; it should be safe to add it back in.  Also note that you can build the convenience ltdl contained within babel itself - use the external libtool only if this doesn't work. 
    2124 
    2225If the configure fails, run aclocal, autoconf, and automake in both $BABEL_SRC and $BABEL_SRC/runtime.  Note that you will need autoconf 2.64 and automake 1.10.x; these are not available on the login machines and you will have to build them yourself (but do not need to port them to BG/P; they will only be used for building). 
    2326 
    24 If your configure fails, please look at Boyana's instructions below and examine your output to determine where the mistake could be. 
     27If your configure fails, please look at Boyana's instructions below and examine your output to determine where the mistake could be.  However, note that you should '''not''' include '-G' in the LDFLAGS.  This flag is for building libraries only; providing it to an executable build will cause severe problems. 
    2528 
    26293. Run $BABEL_SRC/contrib/libtool_fix.sh in the $BABEL_SRC directory.  This will patch your libtool files so that they are compatible with the BG/P compilers.  '''Do not skip this step.  If step 4 fails, make sure you have done this.''' 
     
    28314. 'make clean all install' 
    2932 
    30 If your make fails, please look at Boyana's instructions below and examine your output to determine where the mistake could be.  A last resort is to build the latest development version of libtool, which has some preliminary BG/P support rolled into it.  You can get instructions on how to obtain it from [http://www.gnu.org/software/libtool/ the GNU libtool project page].  You WILL need to build libtool for BG/P so that it is possible to link against the ltdl libraries.  If you're frightened of rolling your own, you can use the libtool available in /home/tramer/libtool-dev-bgp.  Note that you will still need the latest (stable) aclocal, autoconf, and automake to get the dev libtool to work. 
     33If your make fails, please look at Boyana's instructions below and examine your output to determine where the mistake could be. 
     34 
     35==== Running regression tests ==== 
     36 
     37Again, '''you cannot run regression tests from /scratch.'''  Trying to do so will cause headaches and a complete lack of output from mpirun.  Build your babel source in your home directory (or another directory mounted by the BG/P) in order to run regression tests. 
     38 
     39Note that currently there is no automation for running babel tests on the BG/P; you will have to run them by hand.  Therefore it is recommended that you only run a handful; the struct and array tests are most useful since they involve data alignment and can be used to detect any issues of that sort.  You can run a regression test by: 
     40 
     411. Edit the libtool convenience script for 'runAll' in the test of your choice: 
     42 
     43{{{ 
     44[email protected]:~/babel/trunk/regression/arrays/runC> diff runAll runAll.cobalt  
     45135c135,138 
     46<       exec "$progdir/$program" ${1+"[email protected]"} 
     47--- 
     48>       cobalt-mpirun -mode vn -np 1 -verbose 2 -cwd `pwd` -env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH} SIDL_DLL_PATH=${SIDL_DLL_PATH}" \ 
     49>         "$progdir/$program" ${1+"[email protected]"} 
     50 
     51}}} 
     52 
     532. 'qsub --mode script -A cca-tools -t 15 -n 1 runAll.sh' 
     54 
     553. Once the job completes on the BG/P nodes, you will have to manually examine the test output for failures.  Please note that tests will (erroneously) marked as BROKEN due to the return value of cobalt-mpirun from the libtool convenience script.  Actual broken tests can only be checked by examining the output and error logs. 
    3156 
    3257==== Old build instructions (Notes by Boyana Norris [mailto:[email protected]]) ====