[cig-commits] r12686 - seismo/3D/SPECFEM3D_GLOBE/trunk

leif at geodynamics.org leif at geodynamics.org
Tue Aug 19 19:21:20 PDT 2008


Author: leif
Date: 2008-08-19 19:21:19 -0700 (Tue, 19 Aug 2008)
New Revision: 12686

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/
Log:
Extended the BuildBot script to actually run the code.


Property changes on: seismo/3D/SPECFEM3D_GLOBE/trunk
___________________________________________________________________
Name: buildbot:script
   - #!/bin/sh

buildnumber=$1
code_dir=`pwd`

# configuration
bench_dir=/home/siemins/buildbot
runs="run1 run2"

echo Build $buildnumber

status=0

mkdir output || exit $?

if [ ! -d $bench_dir ]; then
    # We are not running on a cluster; simply build the code.
    ./configure
    status=$?
    if [ $status -eq 0 ]; then
        make
        status=$?
    fi
    mv config.log output || exit $?
    tar cvzf output.bbl output || exit $?
    exit $status
fi

for run in $runs; do
    cd $code_dir || exit $?
    mkdir output/$run || exit $?
    cd output/$run || exit $?
    mkdir DATA OUTPUT_FILES obj || exit $?
    cp $code_dir/DATA/CMTSOLUTION DATA || exit $?
    cp $code_dir/DATA/STATIONS DATA || exit $?
    cp $code_dir/DATA/Par_file DATA || exit $?
    for pathname in $code_dir/DATA/*; do
        filename=`basename $pathname`
        if [ ! -e DATA/$filename ]; then
            ln -s $pathname DATA || exit $?
        fi
    done
    # Currently, BuildBot always sets FC to 'mpif90';
    # force it to 'ifort' in order to get the right flags.
    $code_dir/configure FC=ifort
    if [ $? -eq 0 ]; then
        make
        if [ $? -ne 0 ]; then
            status=1
        fi
    else
        status=1
    fi
done

# TODO: launch simulation, compare results

cd $code_dir || exit $?
tar cvzf output.bbl output/*/config.log || exit $?
exit $status


   + #!/bin/sh

buildnumber=$1

CODE_DIR=`pwd`
export CODE_DIR

######################################################################
# configuration

bench_dir=/home/siemins/buildbot
runs="forward kernel"

#---------------------------------------------------------------------
# forward run

function get_forward_parameters {
    SAVE_FORWARD=.false.
    NCHUNKS=6
    NPROC_XI=6
    NPROC_ETA=6
    MODEL=1D_transversely_isotropic_prem
    GRAVITY=.true.
    ATTENUATION=.true.
    RECORD_LENGTH_IN_MINUTES=50.0d0
}

#---------------------------------------------------------------------
# kernel run

function get_kernel_parameters {
    SAVE_FORWARD=.true.
    NCHUNKS=6
    NPROC_XI=6
    NPROC_ETA=6
    MODEL=1D_isotropic_prem
    GRAVITY=.false.
    ATTENUATION=.false.
    RECORD_LENGTH_IN_MINUTES=12.0d0
}

######################################################################
# utilities

function create_par_file {
    sed -e "
s:^SIMULATION_TYPE .*:SIMULATION_TYPE                 = 1:
s:^SAVE_FORWARD .*:SAVE_FORWARD                    = $SAVE_FORWARD:
s:^NCHUNKS .*:NCHUNKS                         = $NCHUNKS:
s:^ANGULAR_WIDTH_XI_IN_DEGREES .*:ANGULAR_WIDTH_XI_IN_DEGREES   = 90.d0 :
s:^ANGULAR_WIDTH_ETA_IN_DEGREES .*:ANGULAR_WIDTH_ETA_IN_DEGREES  = 90.d0 :
s:^NEX_XI .*:NEX_XI                          = 288 :
s:^NEX_ETA .*:NEX_ETA                         = 288 :
s:^NPROC_XI .*:NPROC_XI                        = $NPROC_XI :
s:^NPROC_ETA .*:NPROC_ETA                       = $NPROC_ETA :
s:^MODEL .*:MODEL                           = $MODEL :
s:^OCEANS .*:OCEANS                          = .false. :
s:^ELLIPTICITY .*:ELLIPTICITY                     = .false. :
s:^TOPOGRAPHY .*:TOPOGRAPHY                      = .false. :
s:^GRAVITY .*:GRAVITY                         = $GRAVITY :
s:^ROTATION .*:ROTATION                        = .false. :
s:^ATTENUATION .*:ATTENUATION                     = $ATTENUATION :
s:^ABSORBING_CONDITIONS .*:ABSORBING_CONDITIONS            = .false. :
s:^RECORD_LENGTH_IN_MINUTES .*:RECORD_LENGTH_IN_MINUTES        = $RECORD_LENGTH_IN_MINUTES :
s:^MOVIE_SURFACE .*:MOVIE_SURFACE                   = .false. :
s:^MOVIE_VOLUME .*:MOVIE_VOLUME                    = .false. :
s:^SAVE_MESH_FILES .*:SAVE_MESH_FILES                 = .false. :
s:^NUMBER_OF_RUNS .*:NUMBER_OF_RUNS                  = 1 :
s:^LOCAL_PATH .*:LOCAL_PATH                      = $LOCAL_PATH :
s:^OUTPUT_SEISMOS_ASCII_TEXT .*:OUTPUT_SEISMOS_ASCII_TEXT       = .true. :
s:^ROTATE_SEISMOGRAMS_RT .*:ROTATE_SEISMOGRAMS_RT           = .false. :
s:^WRITE_SEISMOGRAMS_BY_MASTER .*:WRITE_SEISMOGRAMS_BY_MASTER     = .false. :
s:^SAVE_ALL_SEISMOS_IN_ONE_FILE .*:SAVE_ALL_SEISMOS_IN_ONE_FILE    = .false. :
s:^USE_BINARY_FOR_LARGE_FILE .*:USE_BINARY_FOR_LARGE_FILE       = .false. :
s:^PRINT_SOURCE_TIME_FUNCTION .*:PRINT_SOURCE_TIME_FUNCTION      = .false. :
" $CODE_DIR/DATA/Par_file > DATA/Par_file

}

function run_job {

    bsub <<EOF
#!/bin/sh
#BSUB -J buildbot
#BSUB -q normal
#BSUB -W 2880
#BSUB -n $NPROC
#BSUB -a mpich_gm
#BSUB -o OUTPUT_FILES/%J.o
#BSUB -K

echo \$LSB_MCPU_HOSTS > OUTPUT_FILES/lsf_machines
cat OUTPUT_FILES/lsf_machines | xargs -n 2 echo | awk '{ print \$1 }' > OUTPUT_FILES/machines
shmux -M50 -Sall -c "mkdir -p $LOCAL_PATH" - < OUTPUT_FILES/machines >/dev/null

mpirun.lsf --gm-no-shmem --gm-copy-env \$PWD/xmeshfem3D
mpirun.lsf --gm-no-shmem --gm-copy-env \$PWD/xspecfem3D

shmux -M 50 -S all -c "rm -rf $LOCAL_PATH" - < OUTPUT_FILES/machines >/dev/null

EOF

    if [ $? -ne 0 ]; then
        status=1
    fi
}

######################################################################

echo Build $buildnumber

status=0

mkdir output || exit $?

if [ ! -d $bench_dir ]; then
    # We are not running on a cluster; simply build the code.
    ./configure
    status=$?
    if [ $status -eq 0 ]; then
        make
        status=$?
    fi
    mv config.log output || exit $?
    tar cvzf output.bbl output || exit $?
    exit $status
fi

for run in $runs; do
    cd $CODE_DIR || exit $?
    mkdir output/$run || exit $?
    cd output/$run || exit $?
    mkdir DATA OUTPUT_FILES obj || exit $?
    cp $CODE_DIR/DATA/CMTSOLUTION DATA || exit $?
    cp $CODE_DIR/DATA/STATIONS DATA || exit $?
    get_${run}_parameters
    LOCAL_PATH=/scratch/buildbot-$buildnumber-$run
    create_par_file
    for pathname in $CODE_DIR/DATA/*; do
        filename=`basename $pathname`
        if [ ! -e DATA/$filename ]; then
            ln -s $pathname DATA || exit $?
        fi
    done

    # Currently, BuildBot always sets FC to 'mpif90';
    # force it to 'ifort' in order to get the right flags.
    $CODE_DIR/configure FC=ifort
    if [ $? -eq 0 ]; then
        make
        if [ $? -ne 0 ]; then
            status=1
        fi
    else
        status=1
    fi

    NPROC=$(( $NCHUNKS * $NPROC_XI * $NPROC_ETA ))
    run_job

done

cd $CODE_DIR || exit $?
tar cvzf output.bbl output/*/config.log output/*/output_*.txt || exit $?
exit $status




More information about the cig-commits mailing list