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. |
| 13 | 1. 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 | |
| 15 | If you would like to avoid building either prerequisite, they are available for you at: |
| 16 | |
| 17 | libxml2: /gpfs/home/tramer/libxml2-bgp |
| 18 | libtool: /gpfs/home/tramer/libtool-dev-bgp |
| 19 | |
| 20 | |
| 21 | 2. Configure the project from $BABEL_SRC: |
| 22 | |
| 23 | {{{ |
| 24 | configure 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 | }}} |
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. |
| 46 | 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 build and fix the regression tests with: |
| 47 | |
| 48 | 1. 'make check' will build the regression tests. Expect everything to fail spectacularly in the gantlet run. |
| 49 | |
| 50 | 2. Run $BABEL_SRC/contrib/regression_fix.sh to patch the regression files. |
| 51 | |
| 52 | 3. '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 | |
| 54 | 4. 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. |