qmcpack/tests/test_automation/nightly_ornl_olcf_titan_cpu...

159 lines
4.2 KiB
Bash

#!/bin/bash
#
#PBS -A mat044
#PBS -N QMCPACKTestTitan
#PBS -j oe
#PBS -l walltime=2:00:00,nodes=1
#PBS -q batch
#PBS -m e
#PBS -M kentpr@ornl.gov
#
# Setup for titan.ccs.ornl.gov
#
# Run the "short" nightlies, requeue if an executable is built.
#
# Titan I/O and compile is incredibly slow -> generous build/test times
#
# Location of job script must be set at end ($HOME/.qmcpack_test_jobs/... ) for resubmit
#
# Checkout, build, and run on scratch. Use custom names for checkout
# directory because scratch is shared.
#
cd $PBS_O_WORKDIR
module load subversion
#Must be an absolute path
place=$MEMBERWORK/mat044/QMCPACK_CI_BUILDS_DO_NOT_REMOVE
if [ -e $MEMBERWORK/mat044 ]; then
if [ ! -e $place ]; then
mkdir $place
fi
if [ -e $place ]; then
for sys in build_gnu build_gnu_complex
do
cd $place
if [ -e titan_$sys ]; then
rm -r -f titan_$sys
fi
mkdir titan_$sys
cd titan_$sys
echo --- Checkout for $sys `date`
svn checkout https://svn.qmcpack.org/svn/trunk
# Fake checkout for testing:
#mkdir trunk
#echo >trunk/CMakeLists.txt
#svn checkout https://subversion.assembla.com/svn/qmcdev/trunk
if [ -e trunk/CMakeLists.txt ]; then
cd trunk
mkdir $sys
cd $sys
echo --- Building for $sys `date`
case $sys in
"build_gnu")
# Build with GNU PrgEnv on titan, not default PGI.
current_prgenv=`echo $LOADEDMODULES|sed -e 's/.*PrgEnv/PrgEnv/' -e 's/\/.*//g'`
echo $current_prgenv
module swap $current_prgenv PrgEnv-gnu
if (echo $LOADEDMODULES | grep -q cudatoolkit)
then
echo "Unloading cudatoolkit for CPU code compilation."
module unload cudatoolkit
fi
module load cray-hdf5
module load cmake/2.8.11.2
module load fftw
export FFTW_HOME=$FFTW_DIR/..
module load boost
export QMCPACK_TEST_SUBMIT_NAME=GCC-Release
ctest -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=CC -S $PWD/../CMake/ctest_script.cmake,release -R short -VV
;;
"build_gnu_complex")
# Build with GNU PrgEnv on titan, not default PGI
current_prgenv=`echo $LOADEDMODULES|sed -e 's/.*PrgEnv/PrgEnv/' -e 's/\/.*//g'`
echo $current_prgenv
module swap $current_prgenv PrgEnv-gnu
if (echo $LOADEDMODULES | grep -q cudatoolkit)
then
echo "Unloading cudatoolkit for CPU code compilation."
module unload cudatoolkit
fi
module load cray-hdf5
module load cmake/2.8.11.2
module load fftw
export FFTW_HOME=$FFTW_DIR/..
module load boost
export QMCPACK_TEST_SUBMIT_NAME=GCC-Complex-Release
ctest -DQMC_COMPLEX=1 -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=CC -S $PWD/../CMake/ctest_script.cmake,release -R short -VV
;;
"build_gnu_cuda")
# Build with GNU PrgEnv on titan, not default PGI.
current_prgenv=`echo $LOADEDMODULES|sed -e 's/.*PrgEnv/PrgEnv/' -e 's/\/.*//g'`
echo $current_prgenv
module swap $current_prgenv PrgEnv-gnu
module load cudatoolkit
module load cray-hdf5
module load cmake/2.8.11.2
module load fftw
export FFTW_HOME=$FFTW_DIR/..
module load boost
export QMCPACK_TEST_SUBMIT_NAME=GCC-CUDA-Release
ctest -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=CC -DQMC_CUDA=1 -S $PWD/../CMake/ctest_script.cmake,release -R short -VV
;;
*)
echo "ERROR: Unknown build type $sys"
;;
esac
else
echo "ERROR: No CMakeLists. Bad svn checkout."
exit 1
fi
echo --- Finished $sys `date`
done
# Hard-coded logic for resubmission
# Default gnu build executable must be present
if [ -e $place/titan_build_gnu/trunk/build_gnu/bin/qmcpack ]; then
echo "--- Found a built qmcpack executable. Will requeue."
if [ -e $HOME/.qmcpack_test_jobs/nightly_ornl_olcf_titan_cpu.job ]; then
# Run after 11.01pm following Tuesday. This is usually the evening after maintenance
qsub -a `date -d "next Tuesday" +%m%d2301` $HOME/.qmcpack_test_jobs/nightly_ornl_olcf_titan_cpu.job
# Run after 11.01pm next day
#qsub -a 2301 $HOME/.qmcpack_test_jobs/nightly_ornl_olcf_titan_cpu.job
# Run after one week
#qsub -a `date -d "+1 week" +%m%d%H%M` $HOME/.qmcpack_test_jobs/nightly_ornl_olcf_titan_cpu.job
# Example for debugging:
#qsub -a `date -d "+1 hour" +%m%d%H%M` $HOME/.qmcpack_test_jobs/nightly_ornl_olcf_titan_cpu.job
fi
else
echo "ERROR: No built qmcpack executable. Will NOT requeue."
fi
else
echo "ERROR: No directory $place"
exit 1
fi
fi