mirror of https://github.com/QMCPACK/qmcpack.git
159 lines
4.2 KiB
Bash
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
|