Skip to content

Commit 7e79d58

Browse files
author
Louis Nicolas Stenger
committed
Initial commit
0 parents  commit 7e79d58

File tree

3 files changed

+202
-0
lines changed

3 files changed

+202
-0
lines changed

.bash_profile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# .bash_profile
2+
3+
# Get the aliases and functions
4+
if [ -f ~/.bashrc ]; then
5+
. ~/.bashrc
6+
fi
7+
8+
# User specific environment and startup programs
9+
export MODULEPATH="/discofs/$(whoami)/opt/software/modulefiles${MODULEPATH:+:$MODULEPATH}"

.bashrc

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# .bashrc
2+
3+
# Source global definitions
4+
if [ -f /etc/bashrc ]; then
5+
. /etc/bashrc
6+
fi
7+
8+
# User specific environment
9+
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
10+
then
11+
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
12+
fi
13+
export PATH
14+
15+
export TZ='Europe/Zurich'
16+
17+
export SCRATCH="/discofs/$(whoami)"
18+
export PROJECT="/discofs/$(whoami)"
19+
20+
# Uncomment the following line if you don't like systemctl's auto-paging feature:
21+
# export SYSTEMD_PAGER=
22+
23+
# User specific aliases and functions
24+
25+
function gbsmoduleload(){
26+
PETSC_VERSION="${1:-3.19.4}"
27+
PETSC_COMPILER="${2:-intel}"
28+
PETSC_OPTLEVEL="${3:-opt}"
29+
PETSC_MPI='openmpi'
30+
PETSC_MAJOR_VERSION="$(echo $PETSC_VERSION | cut -d. -f1)"
31+
PETSC_MODULENAME="petsc/${PETSC_MAJOR_VERSION}/${PETSC_VERSION}/${PETSC_COMPILER}-${PETSC_MPI}-${PETSC_OPTLEVEL}"
32+
module load "$PETSC_MODULENAME"
33+
export CC=mpicc CXX=mpicxx FC=mpifort
34+
}

petsc_install.sh

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
#!/usr/bin/bash
2+
3+
set -euo pipefail
4+
IFS=$'\n\t'
5+
6+
mkdir -p tmp
7+
export TMP="$(realpath tmp)"
8+
export TEMP="$TMP"
9+
export TMPDIR="$TMP"
10+
11+
INSTALL_ROOT="/discofs/$(whoami)"
12+
INSTALL_OPT="${INSTALL_ROOT}/opt/software"
13+
14+
INSTALL_PETSC_COMPILER="intel"
15+
INSTALL_PETSC_MPI="mpich"
16+
INSTALL_PETSC_HDF5_FORCE_MODULE=""
17+
INSTALL_PETSC_HDF5_VERSION="1.13"
18+
INSTALL_PETSC_OPT="opt" # "opt" or "dbg" or "fast"
19+
INSTALL_PETSC_VERSION_MAJOR="3"
20+
INSTALL_PETSC_VERSION_MINOR="19.4"
21+
INSTALL_PETSC_VERSION="${INSTALL_PETSC_VERSION_MAJOR}.${INSTALL_PETSC_VERSION_MINOR}"
22+
INSTALL_PETSC_TAG="v${INSTALL_PETSC_VERSION}"
23+
24+
INSTALL_PETSC_HDF5_MODULENAME="${INSTALL_PETSC_HDF5_FORCE_MODULE:-hdf5/1/${INSTALL_PETSC_HDF5_VERSION}/latest-${INSTALL_PETSC_COMPILER}-${INSTALL_PETSC_MPI}}"
25+
echo "Using $INSTALL_PETSC_HDF5_MODULENAME as base."
26+
27+
if [[ ${INSTALL_PETSC_COMPILER} =~ "intel" ]]; then
28+
29+
mpiicc &>/dev/null && INSTALL_MPICC='mpiicc' || INSTALL_MPICC='mpicc'
30+
mpiicpc &>/dev/null && INSTALL_MPICXX='mpiicpc' || INSTALL_MPICXX='mpicxx'
31+
mpiifort &>/dev/null && INSTALL_MPIF90='mpiifort' || INSTALL_MPIF90='mpif90'
32+
else
33+
INSTALL_MPICC='mpicc'
34+
INSTALL_MPICXX='mpicxx'
35+
INSTALL_MPIF90='mpif90'
36+
fi
37+
38+
if [[ ${INSTALL_PETSC_MPI} =~ "mpich" ]]; then
39+
if [[ ${INSTALL_PETSC_COMPILER} =~ "intel" ]]; then
40+
export MPICH_CC="icc"
41+
export MPICH_CXX="icpc"
42+
export MPICH_FC="ifort"
43+
fi
44+
fi
45+
46+
if [[ ${INSTALL_PETSC_OPT} == "fast" ]]; then
47+
INSTALL_CFLAGS='-Ofast -DNDEBUG'
48+
INSTALL_CXXFLAGS="${INSTALL_CFLAGS}"
49+
INSTALL_FFLAGS="${INSTALL_CFLAGS}"
50+
INSTALL_PETSC_WITH_DEBUGGING='no'
51+
elif [[ ${INSTALL_PETSC_OPT} == "opt" ]]; then
52+
INSTALL_CFLAGS='-O3 -DNDEBUG'
53+
INSTALL_CXXFLAGS="${INSTALL_CFLAGS}"
54+
INSTALL_FFLAGS="${INSTALL_CFLAGS}"
55+
INSTALL_PETSC_WITH_DEBUGGING='no'
56+
else
57+
INSTALL_PETSC_OPT='dbg'
58+
INSTALL_CFLAGS='-g -O0'
59+
INSTALL_CXXFLAGS="${INSTALL_CFLAGS}"
60+
INSTALL_FFLAGS="${INSTALL_CFLAGS}"
61+
INSTALL_PETSC_WITH_DEBUGGING='yes'
62+
fi
63+
64+
if [[ ${INSTALL_PETSC_OPT} != "dbg" ]]; then
65+
if [[ ${INSTALL_PETSC_COMPILER} =~ "intel" ]]; then
66+
INSTALL_CFLAGS="${INSTALL_CFLAGS} -march=core-avx2 -mtune=core-avx2"
67+
INSTALL_CXXFLAGS="${INSTALL_CXXFLAGS} -march=core-avx2 -mtune=core-avx2"
68+
INSTALL_FFLAGS="${INSTALL_FFLAGS} -march=core-avx2 -mtune=core-avx2"
69+
elif [[ ${INSTALL_PETSC_COMPILER} =~ "aocc" ]]; then
70+
INSTALL_CFLAGS="${INSTALL_CFLAGS} -march=znver2"
71+
INSTALL_CXXFLAGS="${INSTALL_CXXFLAGS} -march=znver2"
72+
INSTALL_FFLAGS="${INSTALL_FFLAGS} -march=znver2"
73+
else
74+
INSTALL_CFLAGS="${INSTALL_CFLAGS} -march=znver2 -mtune=native"
75+
INSTALL_CXXFLAGS="${INSTALL_CXXFLAGS} -march=znver2 -mtune=native"
76+
INSTALL_FFLAGS="${INSTALL_FFLAGS} -march=znver2 -mtune=native"
77+
fi
78+
fi
79+
80+
if [[ ${INSTALL_PETSC_COMPILER} =~ "intel" ]]; then
81+
INSTALL_CFLAGS="-diag-disable=10441 ${INSTALL_CFLAGS}"
82+
INSTALL_CXXFLAGS="-diag-disable=10441 ${INSTALL_CXXFLAGS}"
83+
fi
84+
85+
module purge
86+
module load $INSTALL_PETSC_HDF5_MODULENAME
87+
88+
IFS=$' \n\t'
89+
echo "Calling the selected compilers"
90+
echo " ${INSTALL_MPICC} ${INSTALL_CFLAGS} --version"
91+
${INSTALL_MPICC} ${INSTALL_CFLAGS} --version
92+
echo
93+
echo " ${INSTALL_MPICXX} ${INSTALL_CXXFLAGS} --version"
94+
${INSTALL_MPICXX} ${INSTALL_CXXFLAGS} --version
95+
echo
96+
echo " ${INSTALL_MPIF90} ${INSTALL_FFLAGS} --version"
97+
${INSTALL_MPIF90} ${INSTALL_FFLAGS} -diag-disable=10006 --version
98+
echo
99+
IFS=$'\n\t'
100+
101+
export PETSC_ARCH="${INSTALL_PETSC_COMPILER}-${INSTALL_PETSC_MPI}-${INSTALL_PETSC_OPT}"
102+
PETSC_PREFIX="petsc/${INSTALL_PETSC_VERSION_MAJOR}/${INSTALL_PETSC_VERSION}/${PETSC_ARCH}"
103+
INSTALL_PETSC_FULL_PREFIX="${INSTALL_OPT}/${PETSC_PREFIX}"
104+
mkdir -p "$INSTALL_PETSC_FULL_PREFIX"
105+
106+
PETSC_CLONE_DIR="${TMPDIR}/petsc-${INSTALL_PETSC_TAG}"
107+
rm -rf ${PETSC_CLONE_DIR}
108+
git clone -b "${INSTALL_PETSC_TAG}" --depth=1 https://gitlab.com/petsc/petsc.git "${PETSC_CLONE_DIR}" || true
109+
pushd "${PETSC_CLONE_DIR}"
110+
./configure \
111+
--prefix="$INSTALL_PETSC_FULL_PREFIX" \
112+
--with-debugging=${INSTALL_PETSC_WITH_DEBUGGING} \
113+
--with-batch \
114+
--with-cc="${INSTALL_MPICC}" \
115+
--with-cxx="${INSTALL_MPICXX}" \
116+
--with-fc="${INSTALL_MPIF90}" \
117+
COPTFLAGS=${INSTALL_CFLAGS} \
118+
CXXOPTFLAGS=${INSTALL_CXXFLAGS} \
119+
FOPTFLAGS=${INSTALL_FFLAGS} \
120+
--download-sowing=yes \
121+
--download-fblaslapack=yes \
122+
--download-hypre=yes
123+
124+
make
125+
make install
126+
popd
127+
128+
MODULE_INSTALL_ROOT="${INSTALL_OPT}/modulefiles"
129+
MODULEFILE_PATH="${MODULE_INSTALL_ROOT}/${PETSC_PREFIX}"
130+
MODULEFILE_DIR="$(dirname ${MODULE_INSTALL_ROOT}/${PETSC_PREFIX})"
131+
mkdir -p "$MODULEFILE_DIR"
132+
133+
cat > "$MODULEFILE_PATH" <<EOF
134+
#%Module 1.0
135+
136+
module load $INSTALL_PETSC_HDF5_MODULENAME
137+
138+
set prefix $INSTALL_PETSC_FULL_PREFIX
139+
140+
prepend-path PATH \$prefix/bin
141+
prepend-path LD_LIBRARY_PATH \$prefix/lib
142+
prepend-path LD_RUN_PATH \$prefix/lib
143+
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
144+
145+
prepend-path --delim " " CFLAGS "-I\$prefix/include"
146+
prepend-path --delim " " CXXFLAGS "-I\$prefix/include"
147+
prepend-path --delim " " FCFLAGS "-I\$prefix/include"
148+
prepend-path --delim " " LDFLAGS "-L\$prefix/lib"
149+
EOF
150+
151+
echo "PETSc should have been installed."
152+
echo " Module files are provided with this installation."
153+
echo " Running the following commands should put PETSc in your PATH:"
154+
echo
155+
echo ' export MODULEPATH="'"${MODULE_INSTALL_ROOT}"'${MODULEPATH:+:$MODULEPATH}"'
156+
echo ' module load petsc'
157+
echo
158+
echo ' The first line may be added to your ~/.bash_profile if it works.'
159+
echo

0 commit comments

Comments
 (0)