Skip to content
build_20.1.0_Python38_FFTW_icc_ompi.HLRS.sh 31.7 KiB
Newer Older
#!/bin/bash
#
# Installation script for GPAW 20.1.0:
# * We compile our own Python as this is the best guarantee to not have to
#   struggle with compatibility problems between various compilers used for
#   various components
# * Using the matching version of ase, 3.19.3
# * Compiling with the Intel compilers
#
# The FFT library is discovered at runtime. With the settings used in this script
# this should be MKL FFT, but it is possible to change this at runtime to either
# MKL, FFTW or the built-in NumPy FFT routines, see the installation instructions
# (link below).
#
# The original installation instructions for GPAW can be found at
# https://gitlab.com/gpaw/gpaw/-/blob/20.1.0/doc/install.rst
#

packageID='20.1.0-Python38-FFTW-icc-ompi'
packageName='GPAW-UEABS'

echo -e "\n###### Building $packageName/$packageID from $0\n\n"

# The next three variables are only used to load the right UEABS module
# and to give example values for variable settings in comments.
install_root=$HOME/UEABS
systemID=HLRS-hawk-rome

module purge
MODULEPATH=$install_root/$systemID/Modules:$MODULEPATH

#
# The following UEABS_ variables are needed:
# We set them manually as we have no UEABS module for this system at the moment.
#
# Directory to put the downloaded sources of the packages.
UEABS_DOWNLOADS=$install_root/SOURCES
# Directory where packages should be installed.
UEABS_PACKAGES=$install_root/$systemID/Packages
# Directory where modules are installed
UEABS_MODULES=$install_root/$systemID/Modules

install_dir=$UEABS_PACKAGES/$packageName/$packageID
modules_dir=$UEABS_MODULES/$packageName
#build_dir="/dev/shm/$USER/$packageName/$packageID"
build_dir="$XDG_RUNTIME_DIR/UEABS-compile/$packageName/$packageID"

# Software versions
python_version='3.8.7'
zlib_version='1.2.11'
ncurses_version='6.2'
readline_version='8.0'
sqlite_version='3.33.0'
sqlite_download='3330000'
libffi_version='3.3'
fftw_version='3.3.8'
libxc_version='4.3.4'

setuptools_version='56.0.0'
setuptoolsscm_version='6.0.1'
wheel_version='0.35.1'

attrs_version='20.3.0'
pybind11_version='2.6.2'
cython_version='0.29.21'

py_version='1.10.0'
pyparsing_version='2.4.7'
toml_version='0.10.2'
iniconfig_version='1.1.1'
packaging_version='20.9'
#pluggy_version='0.13.1'
pytest_version='6.2.3'

numpy_version='1.18.5'
scipy_version='1.5.4'
ase_version='3.19.3'
GPAW_version='20.1.0'

GPAWsetups_version='0.9.20000' # Check version on https://wiki.fysik.dtu.dk/gpaw/setups/setups.html

# Compiler settings
compiler_module='intel/19.1.0'
mpi_module='openmpi/4.0.4'
math_module='mkl/19.1.0'
opt_level='-O2'
proc_opt_flags='-march=core-avx2 -mtune=core-avx2'
fp_opt_flags='-ftz -fp-speculation=safe -fp-model source'
parallel=16

py_maj_min='3.8'

################################################################################
#
# Prepare the system
#

#
# Load modules
#
mkdir -p $modules_dir
module load $compiler_module
module load $mpi_module
module load $math_module

#
# Create the directories and make sure they are clean if that matters
#
/usr/bin/mkdir -p $UEABS_DOWNLOADS

/usr/bin/mkdir -p $install_dir
/usr/bin/rm -rf   $install_dir
/usr/bin/mkdir -p $install_dir

/usr/bin/mkdir -p $modules_dir

/usr/bin/mkdir -p $build_dir
/usr/bin/rm -rf   $build_dir
/usr/bin/mkdir -p $build_dir


################################################################################
#
# Download components
#

echo -e "\n### Downloading files...\n"

function wget() {

    echo "Please download $1 to $UEABS_DOWNLOADS"

}

cd $UEABS_DOWNLOADS

downloads_OK=1

# zlib: https://www.zlib.net/zlib-1.2.11.tar.gz
zlib_file="zlib-$zlib_version.tar.gz"
zlib_url="https://www.zlib.net"
[[ -f $zlib_file ]] || wget "$zlib_url/$zlib_file"
[[ -f $zlib_file ]] || downloads_OK=0

# ncurses: https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz
ncurses_file="ncurses-$ncurses_version.tar.gz"
ncurses_url="https://ftp.gnu.org/pub/gnu/ncurses"
[[ -f $ncurses_file ]] || wget "$ncurses_url/$ncurses_file"
[[ -f $ncurses_file ]] || downloads_OK=0

# readline: https://ftp.gnu.org/pub/gnu/readline/readline-8.0.tar.gz
readline_file="readline-$readline_version.tar.gz"
readline_url="https://ftp.gnu.org/pub/gnu/readline"
[[ -f $readline_file ]] || wget "$readline_url/$readline_file"
[[ -f $readline_file ]] || downloads_OK=0

# sqlite: https://www.sqlite.org/2020/sqlite-autoconf-3330000.tar.gz
sqlite_file="sqlite-autoconf-$sqlite_download.tar.gz"
sqlite_url="https://www.sqlite.org/2020"
[[ -f $sqlite_file ]] || wget "$sqlite_url/$sqlite_file"
[[ -f $sqlite_file ]] || downloads_OK=0

# libffi: https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gz
libffi_file="libffi-$libffi_version.tar.gz"
libffi_url="https://github.com/libffi/libffi/releases/download/v$libffi_version"
[[ -f $libffi_file ]] || wget "$libffi_url/$libffi_file"
[[ -f $libffi_file ]] || downloads_OK=0

# FFTW: http://www.fftw.org/fftw-3.3.8.tar.gz
fftw_file="fftw-$fftw_version.tar.gz"
fftw_url="http://www.fftw.org"
[[ -f $fftw_file ]] || wget "$fftw_url/$fftw_file"
[[ -f $fftw_file ]] || downloads_OK=0

# https://gitlab.com/libxc/libxc/-/archive/4.3.4/libxc-4.3.4.tar.bz2
libxc_file="libxc-$libxc_version.tar.bz2"
libxc_url="https://gitlab.com/libxc/libxc/-/archive/$libxc_version"
[[ -f $libxc_file ]] || wget "$libxc_url/$libxc_file"
[[ -f $libxc_file ]] || downloads_OK=0

# Python: https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz
python_file="Python-$python_version.tar.xz"
python_url="https://www.python.org/ftp/python/$python_version"
[[ -f $python_file ]] || wget "$python_url/$python_file"
[[ -f $python_file ]] || downloads_OK=0

# Downloading setuptools.
setuptools_file="setuptools-$setuptools_version.tar.gz"
setuptools_url="https://pypi.python.org/packages/source/s/setuptools"
[[ -f $setuptools_file ]] || wget $setuptools_url/$setuptools_file
[[ -f $setuptools_file ]] || downloads_OK=0

# Downloading setuptoolssscm so that we can gather all sources for reproducibility.
# https://files.pythonhosted.org/packages/c4/d5/e50358c82026f44cd8810c8165002746cd3f8b78865f6bcf5d7f0fe4f652/setuptools_scm-6.0.1-py3-none-any.whl
setuptoolsscm_file="setuptools_scm-$setuptoolsscm_version.tar.gz"
#setuptoolsscm_file="setuptools_scm-$setuptoolsscm_version-py3-none-any.whl"
setuptoolsscm_url="https://pypi.python.org/packages/source/s/setuptools_scm"
[[ -f $setuptoolsscm_file ]] || wget $setuptoolsscm_url/$setuptoolsscm_file
[[ -f $setuptoolsscm_file ]] || downloads_OK=0

Loading full blame...