[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