run-regression.sh 3.78 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
#!/bin/bash

# This is a shell script to be run from a login node of the Bebop system at
# the LCRC, that will download, compile, and execute the ssg performance 
# regression tests, including any dependencies

# SEE README.spack.md for environment setup information!  This script will not
#     work properly without properly configured spack environment

# exit on any error
set -e

Philip Carns's avatar
Philip Carns committed
13 14 15 16
get_psm2_lib_path() {
    module show `spack module tcl find opa-psm2` |&grep LD_LIBRARY_PATH | cut -d \" -f 4
}

Philip Carns's avatar
Philip Carns committed
17 18 19
# load newer gcc up front
module load gcc_new/7.3.0

Philip Carns's avatar
Philip Carns committed
20 21 22
# location of this script
ORIGIN=$PWD
# scratch area for builds
23
SANDBOX=$PWD/mochi-regression-sandbox-$$
Philip Carns's avatar
Philip Carns committed
24
# install destination
25
PREFIX=$PWD/mochi-regression-install-$$
Philip Carns's avatar
Philip Carns committed
26
# job submission dir
27
JOBDIR=$PWD/mochi-regression-job-$$
Philip Carns's avatar
Philip Carns committed
28 29 30 31 32 33 34 35 36 37 38 39 40
# modify HOME env variable so that we don't perturb ~/.spack/ files for the 
# users calling this script
export HOME=$SANDBOX

mkdir $SANDBOX
mkdir $PREFIX
mkdir $JOBDIR
cp $ORIGIN/margo-regression.sbatch $JOBDIR
cp $ORIGIN/bake-regression.sbatch $JOBDIR
cp $ORIGIN/pmdk-regression.sbatch $JOBDIR
cp $ORIGIN/mobject-regression.sbatch $JOBDIR

# set up build environment
41
cd $SANDBOX
42 43 44 45
git clone -q https://github.com/spack/spack.git
(cd spack && git checkout -b spack-0.14 v0.14.0)
git clone -q https://xgitlab.cels.anl.gov/sds/sds-repo.git
git clone -q https://xgitlab.cels.anl.gov/sds/sds-tests.git
46 47 48

echo "=== BUILD SPACK PACKAGES AND LOAD ==="
. $SANDBOX/spack/share/spack/setup-env.sh
49 50
spack compiler find
spack compilers
51

Philip Carns's avatar
Philip Carns committed
52 53 54 55 56 57 58 59
# use our own packages.yaml for bebop-specific preferences
cp $ORIGIN/packages.yaml $SPACK_ROOT/etc/spack
# add external repo for mochi.  Note that this will not modify the 
# user's ~/.spack/ files because we modified $HOME above
spack repo add ${SANDBOX}/sds-repo
# sanity check
spack repo list
# clean out any stray packages from previous runs, just in case
Philip Carns's avatar
Philip Carns committed
60
spack uninstall -R -y argobots mercury opa-psm2 mochi-bake || true
Philip Carns's avatar
Philip Carns committed
61

62
# nightly tests should test nightly software!
Philip Carns's avatar
Philip Carns committed
63
# spack install ior@develop+mobject ^margo@develop ^mercury@develop ^mobject@develop ^bake@develop ^remi@develop ^thallium@develop ^sdskeyval@develop ^ssg@develop
64

65
# ior acts as our "apex" package here, causing several other packages to build
66
spack install ior@develop +mobject
67

Philip Carns's avatar
Philip Carns committed
68 69
spack install mochi-bake
spack install mochi-ssg
70

71 72 73
# deliberately repeat setup-env step after building modules to ensure
#   that we pick up the right module paths
. $SANDBOX/spack/share/spack/setup-env.sh
Philip Carns's avatar
Philip Carns committed
74 75
# load ssg and bake because they are needed by things compiled outside of
# spack later in this script
Philip Carns's avatar
Philip Carns committed
76 77
spack load -r mochi-ssg
spack load -r mochi-bake
78

79 80
# sds-tests
echo "=== BUILDING SDS TEST PROGRAMS ==="
Philip Carns's avatar
Philip Carns committed
81 82 83
# TODO: why is this needed?  For some reason when we link software
#       outside of spack we are not picking up the path from the psm2 package
LIB_PATH_HACK=$(get_psm2_lib_path)
84
cd $SANDBOX/sds-tests
85 86 87
./prepare.sh
mkdir build
cd build
Philip Carns's avatar
Philip Carns committed
88 89
echo ../configure --prefix=$PREFIX CC=mpicc LDFLAGS="-L$LIB_PATH_HACK"
../configure --prefix=$PREFIX CC=mpicc LDFLAGS="-L$LIB_PATH_HACK"
90
make -j 3
91
make install
92 93 94

# set up job to run
echo "=== SUBMITTING AND WAITING FOR JOB ==="
95 96
cp $PREFIX/bin/margo-p2p-latency $JOBDIR
cp $PREFIX/bin/margo-p2p-bw $JOBDIR
Philip Carns's avatar
Philip Carns committed
97
cp $PREFIX/bin/bake-p2p-bw $JOBDIR
98
cp $PREFIX/bin/pmdk-bw $JOBDIR
99
cd $JOBDIR
Philip Carns's avatar
Philip Carns committed
100

101
export SANDBOX
102 103 104
sbatch --wait --export=ALL ./margo-regression.sbatch || true
sbatch --wait --export=ALL ./bake-regression.sbatch || true
sbatch --wait --export=ALL ./pmdk-regression.sbatch || true
105
sbatch --wait --export=ALL ./mobject-regression.sbatch || true
106 107 108

echo "=== JOB DONE, COLLECTING AND SENDING RESULTS ==="
# gather output, strip out funny characters, mail
109 110 111
cat *.out | col -b > combined.$SLURM_JOB_ID.txt
# dos2unix combined.$SLURM_JOB_ID.txt
mailx -s "mochi-regression (bebop)" sds-commits@lists.mcs.anl.gov < combined.$SLURM_JOB_ID.txt
112 113 114 115

cd /tmp
rm -rf $SANDBOX
rm -rf $PREFIX