StarSs_testing script update for Cray compiler on hermit
The script StarSs_testing_install.sh now accepts the new TARGET=hermit_cray, which builds for the Cray compiler on Hermit. Needs to jump through quite some loops at the moment to accomodate the cray compiler or the configure scripts. Also, as of 28 July, the resulting installation does not work (segfault when executing SMPSs app). Not sure if this is a problem of the new 2.4 runtime, this script, or the Cray programming environment.
This commit is contained in:
parent
60cdbe96e4
commit
27a1d5cb9c
1 changed files with 108 additions and 21 deletions
|
@ -4,6 +4,7 @@ set -ev # exit on any error; echo commands
|
||||||
# this script requires two variables $GIT_COMMIT and $TARGET.
|
# this script requires two variables $GIT_COMMIT and $TARGET.
|
||||||
# The former spcifies with git commit to install, the latter
|
# The former spcifies with git commit to install, the latter
|
||||||
# specifies the target system, ie "laki" or "hermit".
|
# specifies the target system, ie "laki" or "hermit".
|
||||||
|
|
||||||
if [ -z ${GIT_COMMIT} ]; then
|
if [ -z ${GIT_COMMIT} ]; then
|
||||||
echo "Need to define variable GIT_COMMIT on commandline .. exiting.";
|
echo "Need to define variable GIT_COMMIT on commandline .. exiting.";
|
||||||
exit 1;
|
exit 1;
|
||||||
|
@ -20,22 +21,33 @@ else
|
||||||
if [ ${TARGET} = "hermit" ]; then
|
if [ ${TARGET} = "hermit" ]; then
|
||||||
echo "Building for hermit."
|
echo "Building for hermit."
|
||||||
else
|
else
|
||||||
echo "TARGET needs to be hermit or laki ... exiting."
|
if [ ${TARGET} = "hermit_cray" ]; then
|
||||||
|
echo "Building for hermit with Cray compiler."
|
||||||
|
else
|
||||||
|
echo "TARGET needs to be laki, hermit or hermit_cray... exiting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMPILER=gnu-4.5
|
||||||
|
if [ ${TARGET} = "hermit_cray" ]; then
|
||||||
|
COMPILER=cray
|
||||||
|
TARGET=hermit
|
||||||
|
fi
|
||||||
|
|
||||||
# ok, we are good to go
|
# ok, we are good to go
|
||||||
STARSS_OPT_DIR=/sw/${TARGET}/hlrs/StarSs
|
STARSS_OPT_DIR=/sw/${TARGET}/hlrs/StarSs
|
||||||
STARSS_VERSION=2.3_c${GIT_COMMIT}-gnu-4.5
|
STARSS_VERSION=2.4_c${GIT_COMMIT}-${COMPILER}
|
||||||
STARSS_DIR=${STARSS_OPT_DIR}/${STARSS_VERSION}
|
STARSS_DIR=${STARSS_OPT_DIR}/${STARSS_VERSION}
|
||||||
|
|
||||||
WORK_DIR=${HOME}/src
|
WORK_DIR=${HOME}/src
|
||||||
|
|
||||||
# clean up mess from previous builds
|
# clean up mess from previous builds
|
||||||
cd ${WORK_DIR}; rm -rf hlrs-text StarSs_c${GIT_COMMIT}
|
cd ${WORK_DIR}; rm -rf hlrs-text StarSs_c${GIT_COMMIT} Ayudame_c${GIT_COMMIT}
|
||||||
|
rm -rf $STARSS_DIR
|
||||||
if [ ${TARGET} = "laki" ]; then
|
if [ ${TARGET} = "laki" ]; then
|
||||||
rm -f StarSs_c${GIT_COMMIT}.tar
|
rm -f StarSs_c${GIT_COMMIT}.tar Ayudame_c${GIT_COMMIT}.tar
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,11 +56,18 @@ if [ ${TARGET} = "laki" ]; then
|
||||||
module load compiler/gnu/4.5
|
module load compiler/gnu/4.5
|
||||||
module use /opt/amtopt/autotools/modulefiles
|
module use /opt/amtopt/autotools/modulefiles
|
||||||
module load local
|
module load local
|
||||||
|
module load system/perfctr system/papi/4.1.2.1a
|
||||||
|
PAPI_DIR=/sw/laki/hlrs/system/papi/4.1.2.1a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${TARGET} = "hermit" ]; then
|
if [ ${TARGET} = "hermit" ]; then
|
||||||
|
if [ ${COMPILER} = "cray" ]; then
|
||||||
|
module swap $(module list -l 2>&1 | awk '/^PrgEnv-/{print $1}') PrgEnv-cray
|
||||||
|
module load gcc
|
||||||
|
else
|
||||||
module swap $(module list -l 2>&1 | awk '/^PrgEnv-/{print $1}') PrgEnv-gnu
|
module swap $(module list -l 2>&1 | awk '/^PrgEnv-/{print $1}') PrgEnv-gnu
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# prep git repo, needs hlrs-gitolite in .ssh/config and ssh key
|
# prep git repo, needs hlrs-gitolite in .ssh/config and ssh key
|
||||||
cd ${WORK_DIR}
|
cd ${WORK_DIR}
|
||||||
|
@ -59,33 +78,90 @@ if [ ${TARGET} = "laki" ]; then
|
||||||
git checkout -b ayudame origin/ayudame
|
git checkout -b ayudame origin/ayudame
|
||||||
cd ProgModel/SMPSs_repository/starss
|
cd ProgModel/SMPSs_repository/starss
|
||||||
git archive --format=tar --prefix=StarSs_c${GIT_COMMIT}/ -o ${WORK_DIR}/StarSs_c${GIT_COMMIT}.tar ${GIT_COMMIT} .
|
git archive --format=tar --prefix=StarSs_c${GIT_COMMIT}/ -o ${WORK_DIR}/StarSs_c${GIT_COMMIT}.tar ${GIT_COMMIT} .
|
||||||
|
cd ../../../Tools/Ayudame
|
||||||
|
git archive --format=tar --prefix=Ayudame_c${GIT_COMMIT}/ -o ${WORK_DIR}/Ayudame_c${GIT_COMMIT}.tar ${GIT_COMMIT} .
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# unpack, configure and build
|
# unpack, configure and build
|
||||||
cd ${WORK_DIR}
|
cd ${WORK_DIR}
|
||||||
tar xvf StarSs_c${GIT_COMMIT}.tar
|
tar xvf StarSs_c${GIT_COMMIT}.tar
|
||||||
|
tar xvf Ayudame_c${GIT_COMMIT}.tar
|
||||||
|
|
||||||
cd StarSs_c${GIT_COMMIT}
|
cd StarSs_c${GIT_COMMIT}
|
||||||
|
|
||||||
|
if [ ${COMPILER} = "cray" ]; then
|
||||||
|
tar xvf ../StarSs_patch_cray.tar
|
||||||
|
cat c-metadriver/SMPCompiler.cc | \
|
||||||
|
sed 's/compiler.addArgument(std::string("--cpp=") + m_options.m_compiler/compiler.addArgument(std::string("--cpp=gcc")/' > c-metadriver/SMPCompiler.cc_next
|
||||||
|
mv c-metadriver/SMPCompiler.cc_next c-metadriver/SMPCompiler.cc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install dependencies first
|
||||||
|
tar xvjf $WORK_DIR/libbitmask-2.0.tar.bz2
|
||||||
|
tar xvjf $WORK_DIR/libcpuset-1.0.tar.bz2
|
||||||
|
cd libbitmask && autoreconf -fiv && ./configure --prefix=$STARSS_DIR && make install
|
||||||
|
cd ../libcpuset && autoreconf -fiv && ./configure CFLAGS=-I$STARSS_DIR/include LDFLAGS=-L$STARSS_DIR/lib --prefix=$STARSS_DIR && make install
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# ok, now StarSs
|
||||||
autoreconf -fiv 2>&1 | tee autoreconf.log
|
autoreconf -fiv 2>&1 | tee autoreconf.log
|
||||||
./configure --prefix=$STARSS_DIR \
|
PAPI_CONF=
|
||||||
|
if [ ${TARGET} = "laki" ]; then
|
||||||
|
PAPI_CONF="--enable-papi --with-papi=$PAPI_DIR"
|
||||||
|
fi
|
||||||
|
if [ ${COMPILER} = "cray" ]; then
|
||||||
|
./configure CC=gcc SMPFC=ftn SMPCC=cc SMPFPP=gfortran SMPCXX=g++ \
|
||||||
|
--prefix=$STARSS_DIR \
|
||||||
--with-flavour=smp \
|
--with-flavour=smp \
|
||||||
--enable-comm-thread \
|
--enable-comm-thread \
|
||||||
--enable-ayudame
|
--with-libcpuset=$STARSS_DIR \
|
||||||
gzip autoreconf.log; gzip config.log
|
--with-ayudame-include=${WORK_DIR}/Ayudame_c${GIT_COMMIT}/include \
|
||||||
|
${PAPI_CONF} \
|
||||||
|
# empty line
|
||||||
|
else
|
||||||
|
./configure \
|
||||||
|
--prefix=$STARSS_DIR \
|
||||||
|
--with-flavour=smp \
|
||||||
|
--enable-comm-thread \
|
||||||
|
--with-libcpuset=$STARSS_DIR \
|
||||||
|
--with-ayudame-include=${WORK_DIR}/Ayudame_c${GIT_COMMIT}/include \
|
||||||
|
${PAPI_CONF} \
|
||||||
|
# empty line
|
||||||
|
fi
|
||||||
|
|
||||||
make 2>&1 | tee make.log
|
make 2>&1 | tee make.log
|
||||||
rm -rf ${STARSS_DIR}; make install 2>&1 | tee make_install.log
|
make install 2>&1 | tee make_install.log
|
||||||
gzip make.log ; gzip make_install.log
|
|
||||||
|
|
||||||
# save logs
|
# save logs
|
||||||
|
gzip autoreconf.log; gzip config.log; gzip make.log ; gzip make_install.log
|
||||||
cp -a autoreconf.log.gz config.log.gz make.log.gz make_install.log.gz $STARSS_DIR
|
cp -a autoreconf.log.gz config.log.gz make.log.gz make_install.log.gz $STARSS_DIR
|
||||||
|
|
||||||
# copy header files
|
# copy header files
|
||||||
mkdir $STARSS_DIR/include/master
|
#mkdir $STARSS_DIR/include/master
|
||||||
cp -a master/*.h $STARSS_DIR/include/master/
|
#cp -a master/*.h $STARSS_DIR/include/master/
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# do Ayudame
|
||||||
|
cd Ayudame_c${GIT_COMMIT}
|
||||||
|
#cat makefile | \
|
||||||
|
# sed "s/INCLUDE =.*/INCLUDE = ${WORK_DIR}/StarSs_c${GIT_COMMIT}/master/" \
|
||||||
|
# makefile_new
|
||||||
|
#mv makefile_new makefile
|
||||||
|
#make
|
||||||
|
SMPSS_DIR=${WORK_DIR}/StarSs_c${GIT_COMMIT}/master/ make
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
|
||||||
|
# hacky install of Temanejo/Ayudame
|
||||||
|
cd Ayudame_c${GIT_COMMIT}
|
||||||
|
mkdir $STARSS_DIR/temanejo
|
||||||
|
cp -a *.py resources libayudame.so $STARSS_DIR/temanejo
|
||||||
|
ln -s $STARSS_DIR/temanejo/temanejo.py $STARSS_DIR/bin
|
||||||
|
cd ../StarSs_c${GIT_COMMIT}
|
||||||
|
|
||||||
|
|
||||||
# setup smpss-cc.conf
|
# setup smpss-cc.conf
|
||||||
if
|
|
||||||
if [ ${TARGET} = "hermit" ]; then
|
if [ ${TARGET} = "hermit" ]; then
|
||||||
cd $STARSS_DIR/etc
|
cd $STARSS_DIR/etc
|
||||||
cp -a smpss-cc.conf smpss-cc.conf_orig
|
cp -a smpss-cc.conf smpss-cc.conf_orig
|
||||||
|
@ -95,21 +171,32 @@ if [ ${TARGET} = "hermit" ]; then
|
||||||
sed "s/^linker_parameters =.*/\0 -dynamic/" | \
|
sed "s/^linker_parameters =.*/\0 -dynamic/" | \
|
||||||
sed "s/^fortran_compiler =.*/fortran_compiler = ftn/" | \
|
sed "s/^fortran_compiler =.*/fortran_compiler = ftn/" | \
|
||||||
sed "s/^fortran_libs =.*/#\0\nfortran_libs = -lm/" \
|
sed "s/^fortran_libs =.*/#\0\nfortran_libs = -lm/" \
|
||||||
>> smpss-cc.conf_next
|
> smpss-cc.conf_next
|
||||||
mv smpss-cc.conf_next smpss-cc.conf
|
mv smpss-cc.conf_next smpss-cc.conf
|
||||||
|
if [ ${COMPILER} = "cray" ]; then
|
||||||
|
cat smpss-cc.conf | \
|
||||||
|
sed "s/mf95ss_variables = .*/mf95ss_variables = --variable=int_size:4 --variable=size_t_size:8 --variable=void_p_size:8 --variable=long_size:8/" \
|
||||||
|
> smpss-cc.conf_next
|
||||||
|
mv smpss-cc.conf_next smpss-cc.conf
|
||||||
|
cd ../share/mcxx/config.d
|
||||||
|
cat config.superscalar | \
|
||||||
|
sed "s/{gcc} compiler_options = .*/#\0\n{gcc} compiler_options = -hgnu/" \
|
||||||
|
> config.superscalar_next
|
||||||
|
mv config.superscalar_next config.superscalar
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# do module
|
# do module
|
||||||
cd $STARSS_OPT_DIR
|
cd $STARSS_OPT_DIR
|
||||||
chmod -R g=u $STARSS_VERSION
|
chmod -R g=u $STARSS_VERSION
|
||||||
chmod -R o=u $STARSS_VERSION
|
chmod -R o=u-w $STARSS_VERSION
|
||||||
chmod -R o-w $STARSS_VERSION
|
|
||||||
|
|
||||||
cd modulefiles
|
cd modulefiles
|
||||||
cat 2.3_testing-gnu-4.5 | \
|
cat 2.4_testing-${COMPILER} | \
|
||||||
sed "s/set VERSION.*/set VERSION ${STARSS_VERSION}/" | \
|
sed "s/set VERSION.*/set VERSION ${STARSS_VERSION}/" | \
|
||||||
sed "s/ Installed.*/ Installed `date`/" > ${STARSS_VERSION}
|
sed "s/ Installed.*/ Installed `date`/" > ${STARSS_VERSION}_next
|
||||||
|
mv ${STARSS_VERSION}_next ${STARSS_VERSION}
|
||||||
chmod 664 ${STARSS_VERSION}
|
chmod 664 ${STARSS_VERSION}
|
||||||
rm 2.3_testing-gnu-4.5
|
rm 2.4_testing-${COMPILER}
|
||||||
ln -s ${STARSS_VERSION} 2.3_testing-gnu-4.5
|
ln -s ${STARSS_VERSION} 2.4_testing-${COMPILER}
|
||||||
|
|
Loading…
Reference in a new issue