Changes between Version 38 and Version 39 of babelbgp


Ignore:
Timestamp:
11/05/09 14:16:19 (13 years ago)
Author:
tramer
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • babelbgp

    v38 v39  
    11== Installing Babel on BG/P (Surveyor at Argonne) == 
    22 
    3 ==== Current build instructions (Notes by Stephen Tramer [mailto:[email protected]]) ==== 
     3Please note that if you are a member of the cca-tools project on surveyor, '''you do not need to build babel.'''  It is available to you at /gpfs/home/projects/ccatools/babel. 
     4 
     5=== Current build instructions (Notes by Stephen Tramer [mailto:[email protected]]) === 
    46 
    57It 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. 
     
    911These 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. 
    1012 
    11 1. 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. 
    12  
    13 2. Configure the project: 
    14  
    15 {{{ 
    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  
    23 You 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. 
     131. Prerequisites.  You will need to build libxml2 and the latest libtool development branch (which has some limited BG/P) support in it for BG/P.  Building this software is actually fairly easy; however you will need to run the libtool fixing script in $BABEL_SRC/contrib/libtool_fix.sh after configuring libxml2, and midway through the make process for libtool (after it bootstraps itself to compile the convenience libraries). 
     14 
     15If you would like to avoid building either prerequisite, they are available for you at: 
     16 
     17libxml2: /gpfs/home/tramer/libxml2-bgp 
     18libtool: /gpfs/home/tramer/libtool-dev-bgp 
     19 
     20 
     212. Configure the project from $BABEL_SRC: 
     22 
     23{{{ 
     24configure CC=mpixlc CXX=mpixlcxx FC=mpixlf90 F77=mpixlf77 --prefix=$INSTALL_DIR --host=powerpc-bgp-linux-gnu --without-sidlx \ 
     25  --with-gcc=no --enable-python=/bgsys/drivers/ppcfloor/gnu-linux/bin/python --with-libxml2=$LIBXML2_LOCATION \ 
     26  LDFLAGS=-qnostaticlink --enable-shared --disable-static host_alias=powerpc-bgp-linux-gnu --target=powerpc64-ibm-bgp \ 
     27  --with-ltdl-lib=$LIBTOOL_LOCATION/lib --with-ltdl-include=$LIBTOOL_LOCATION/include --without-libparsifal \ 
     28  PYTHONPATH=/soft/apps/python/python-2.6-cnk-gcc/numpy-1.3.0/lib/python2.6/site-packages CPP="gcc -E" \ 
     29  target_alias=powerpc64-ibm-bgp 
     30}}} 
    2431 
    2532If 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). 
     
    3744Again, '''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. 
    3845 
    39 Note 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  
    41 1. 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  
    45 135c135,138 
    46 <       exec "$progdir/$program" ${1+"[email protected]"} 
    47 --- 
    48 >      if [ "X${PYTHONPATH}" != "X" ]; then 
    49 >          ADDITIONAL_ARG="PYTHONPATH=${PYTHONPATH}" 
    50 >      fi 
    51 >      cobalt-mpirun -mode vn -np 1 -verbose 2 -cwd `pwd` \ 
    52 >          -env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH} SIDL_DLL_PATH=${SIDL_DLL_PATH} $ADDITIONAL_ARG" \ 
    53 >          "$progdir/$program" ${1+"[email protected]"} 
    54 }}} 
    55  
    56 2. 'qsub --mode script -A cca-tools -t 15 -n 1 runAll.sh' 
    57  
    58 3. 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. 
     46Note 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 build and fix the regression tests with: 
     47 
     481. 'make check' will build the regression tests.  Expect everything to fail spectacularly in the gantlet run. 
     49 
     502. Run $BABEL_SRC/contrib/regression_fix.sh to patch the regression files. 
     51 
     523. 'qsub --mode script -A cca-tools -t 15 -n 1 X' where 'X' represents your test.  For most cases this should be 'runAll.sh'; for python client tests you will be running a specific script.  Note that the Py2Py tests are broken on BG/P and we haven't been able to figure out why yet - in fact, all loading from SCL files seems to be something of a crapshoot. 
     53 
     544. 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. 
    5955 
    6056==== Old build instructions (Notes by Boyana Norris [mailto:[email protected]]) ====