Skip to content

Commit

Permalink
Added comments and content from Sergey
Browse files Browse the repository at this point in the history
  • Loading branch information
fomics committed Dec 5, 2019
1 parent 506faa1 commit d08ba09
Show file tree
Hide file tree
Showing 14 changed files with 503 additions and 1 deletion.
25 changes: 25 additions & 0 deletions ICON/build_env_init.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# This file contains some helper shell functions, which help to initialize the
# building environment. It is supposed to be sourced inside the script passed
# as BUILD_ENV parameter of the configure script of ICON (see example below).
# It is recommended to keep this script as portable as possible:
# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html
#
# Example:
# ${ICON_DIR}/configure BUILD_ENV='. ./build_env_init.sh; switch_for_module PrgEnv-cray/6.0.4;'

function switch_for_module {
if test ! -z $1; then
packageName=`echo $1 | awk -F/ '{print $(NF-1)}'`
same_name_modules=`module -t list 2>&1 | sed -n '/^'$packageName'\(\/.*\|$\)/p'`
test -n "$same_name_modules" && module unload $same_name_modules
conflicting_modules=`module show $packageName 2>&1 | sed -n 's/^conflict[ \t][ \t]*\([^ \t][^ \t]*\)/\1/p'`
test -n "$conflicting_modules" && module unload $conflicting_modules
module load $1
fi
}

function switch_for_modules {
for module in $*""; do
switch_for_module $module
done
}
86 changes: 86 additions & 0 deletions ICON/image/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
FROM nvidia/cuda:10.1-devel-ubuntu16.04

RUN useradd -ms /bin/bash cscs

#ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install \
wget \
ssh \
vim \
ksh \
less \
environment-modules \
git \
rsync \
libcurl4-openssl-dev \
libxml2-dev \
python2.7 \
python-pip --yes --no-install-recommends && \
apt-get clean

RUN pip install --upgrade pip setuptools

WORKDIR /home/cscs

USER cscs

RUN pip install --user easybuild

RUN git clone https://github.com/lucamar/production.git && \
cd production && \
git checkout tsa76

ENV PATH=$PATH:/home/cscs/.local/bin \
EASYBUILD_MODULES_TOOL=EnvironmentModulesC \
#EASYBUILD_MODULES_TOOL=EnvironmentModules \
EASYBUILD_MODULE_SYNTAX=Tcl \
EASYBUILD_ROBOT_PATHS=/home/cscs/production/easybuild/easyconfigs:/home/cscs/.local/easybuild/easyconfigs

#RUN eb binutils-2.30-GCCcore-7.3.0.eb -r

RUN mkdir -p /home/cscs/.local/easybuild/sources/PGI
COPY pgilinux-2019-1910-x86-64.tar.gz /home/cscs/.local/easybuild/sources/PGI/
COPY PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/p/PGI/
RUN eb PGI-19.10-GCC-7.3.0-2.30.eb -r
# eb numactl-2.0.11-GCCcore-7.3.0.eb -r && \

# # # COPY UCX-1.5.2-GCCcore-7.3.0-cuda-9.1.eb /home/cscs/.local/easybuild/easyconfigs/u/UCX/
# # # RUN eb UCX-1.5.2-GCCcore-7.3.0-cuda-9.1.eb -r
# #
COPY Szip-2.1.1-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/s/Szip/
COPY OpenMPI-4.0.1-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/o/OpenMPI/
#RUN eb OpenMPI-4.0.1-PGI-19.10-GCC-7.3.0-2.30.eb

COPY HDF5-1.10.5-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/H/HDF5/
RUN eb HDF5-1.10.5-PGI-19.10-GCC-7.3.0-2.30.eb -r

#COPY --chown=cscs osu /home/cscs/osu/
#RUN /bin/bash -c ". /usr/share/modules/init/bash && module user .local/easybuild/modules/all && module load OpenMPI/4.0.1-PGI-19.4-GCC-7.3.0-2.30 && cd osu && make -f Makefile_p2p CC=mpicc"

COPY netCDF-4.6.1-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/n/netCDF/

RUN eb CMake-3.14.1.eb -r

COPY netCDF-Fortran-4.4.4-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/n/netCDF-Fortran/
RUN eb netCDF-Fortran-4.4.4-PGI-19.10-GCC-7.3.0-2.30.eb -r

COPY MPICH-3.1.4-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/m/MPICH/

RUN eb MPICH-3.1.4-PGI-19.10-GCC-7.3.0-2.30.eb -r

RUN ln -s /usr/lib/x86_64-linux-gnu/libxml2.a ~/.local/lib/ && \
mkdir ~/.local/include && \
ln -s /usr/include/libxml2 ~/.local/include/

COPY JasPer-2.0.14-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/j/JasPer
RUN eb JasPer-2.0.14-PGI-19.10-GCC-7.3.0-2.30.eb -r

COPY ecCodes-2.13.0-PGI-19.10-GCC-7.3.0-2.30.eb /home/cscs/production/easybuild/easyconfigs/c/ecCodes/
RUN eb ecCodes-2.13.0-PGI-19.10-GCC-7.3.0-2.30.eb

ENV ICON_DOCKER=1

RUN echo '. /usr/share/modules/init/bash' >> /home/cscs/.bashrc && \
echo 'module use /home/cscs/.local/easybuild/modules/all' >> /home/cscs/.bashrc
28 changes: 28 additions & 0 deletions ICON/image/HDF5-1.10.5-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# @author: gppezzi
easyblock = 'ConfigureMake'

name = 'HDF5'
version = '1.10.5'

homepage = 'http://www.hdfgroup.org/HDF5/'
description = """HDF5 is a unique technology suite that makes possible the
management of extremely large and complex data collections."""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}
toolchainopts = {'optarch': True, 'pic': True}

source_urls = ['https://support.hdfgroup.org/ftp/%(name)s/releases/%(namelower)s-%(version_major_minor)s/%(namelower)s-%(version)s/src']
sources = [SOURCELOWER_TAR_GZ]

dependencies = [
# ('zlib', '1.2.11'),
('Szip', '2.1.1'),
]

# Add -noswitcherror to make PGI compiler ignore the unknown compiler option -pthread
preconfigopts = 'export CXX="$CXX -noswitcherror" && '

buildopts = '-l6'


moduleclass = 'data'
32 changes: 32 additions & 0 deletions ICON/image/JasPer-2.0.14-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# contributed by Luca Marsella (CSCS)
easyblock = 'CMakeMake'

name = 'JasPer'
version = '2.0.14'

homepage = 'http://www.ece.uvic.ca/~frodo/jasper/'
description = """
gzip (GNU zip) is a popular data compression program as a replacement
for compress
"""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}
toolchainopts = {'pic': True}

sources = [SOURCELOWER_TAR_GZ]
source_urls = ['https://www.ece.uvic.ca/~frodo/jasper/software/']

builddependencies = [
('CMake', '3.14.1', '', True)
]

configopts = '-DJAS_ENABLE_DOC=FALSE'

separate_build_dir = 'True'

sanity_check_paths = {
'files': ['bin/jasper', 'lib64/libjasper.%s' % SHLIB_EXT],
'dirs': ['include'],
}

moduleclass = 'vis'
14 changes: 14 additions & 0 deletions ICON/image/MPICH-3.1.4-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name = 'MPICH'
version = '3.1.4'

homepage = 'http://www.mpich.org/'
description = """MPICH v3.x is an open source high-performance MPI 3.0 implementation.
It does not support InfiniBand (use MVAPICH2 with InfiniBand devices)."""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}

source_urls = ['http://www.mpich.org/static/tarballs/%(version)s']
sources = [SOURCELOWER_TAR_GZ]
# checksums = ['5db53bf2edfaa2238eb6a0a5bc3d2c2ccbfbb1badd79b664a1a919d2ce2330f1']

moduleclass = 'mpi'
39 changes: 39 additions & 0 deletions ICON/image/OpenMPI-4.0.1-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
easyblock = 'ConfigureMake'

name = 'OpenMPI'
version = "4.0.1"

homepage = 'https://www.open-mpi.org/'
description = """The Open MPI Project is an open source MPI-3 implementation."""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}
toolchainopts = {'vectorize': False}

source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
sources = [SOURCELOWER_TAR_GZ]
checksums = []

builddependencies = [
('zlib', '1.2.11', '', True),
]

configopts = (
"CC=pgcc "
"CXX=pgc++ "
"FC=pgf90 "
"CFLAGS=-m64 "
"CXXFLAGS=-m64 "
"FCFLAGS=-m64 "
"--enable-shared "
"--enable-mpi-thread-multiple "
)

libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"]
sanity_check_paths = {
'files': ["bin/%s" % binfile for binfile in ["ompi_info", "opal_wrapper", "orterun"]] +
["lib/lib%s.%s" % (libfile, SHLIB_EXT) for libfile in libs] +
["include/%s.h" % x for x in ["mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]],
'dirs': [],
}

moduleclass = 'mpi'
39 changes: 39 additions & 0 deletions ICON/image/PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# contributed by Luca Marsella (CSCS)
name = 'PGI'
version_major = '19'
version_minor = '10'
version = '%s.%s' % (version_major,version_minor)

gccver = '7.3.0'
binutilsver = '2.30'
versionsuffix = '-GCC-%s-%s' % (gccver, binutilsver)

homepage = 'http://www.pgroup.com/'
description = "C, C++ and Fortran compilers from The Portland Group - PGI"

toolchain = {'name': 'dummy', 'version': ''}

sources = ['/home/cscs/.local/easybuild/sources/PGI/pgilinux-20%(version_major)s-%(version_major)s%(version_minor)s-x86-64.tar.gz']

install_amd = 'False'
install_java = 'False'
install_mpi = 'False'
mpi_gpu_support = 'False'

#dependencies = [
# ('GCCcore', gccver),
# ('binutils', binutilsver, '', ('GCCcore', gccver)),
#]

postinstallcmds = [
'mv %(installdir)s/linux86-64-llvm/{0}/lib/pgiloc.ld %(installdir)s/linux86-64-llvm/{0}/lib/pgiloc.ld.BAK'.format(version),
'mv %(installdir)s/linux86-64-nollvm/{0}/lib/pgiloc.ld %(installdir)s/linux86-64-nollvm/{0}/lib/pgiloc.ld.BAK'.format(version),
]

# license file
license_file = '/apps/common/UES/licensesCSCS/pgi/license.dat'
modtclfooter = """
setenv LM_LICENSE_FILE /apps/common/UES/licensesCSCS/pgi/license.dat
"""

moduleclass = 'compiler'
24 changes: 24 additions & 0 deletions ICON/image/Szip-2.1.1-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# contributed by Matthias Kraushaar (CSCS)
easyblock = 'ConfigureMake'

name = 'Szip'
version = '2.1.1'

homepage = 'http://www.hdfgroup.org/doc_resource/SZIP/'
description = """Szip compression software, providing lossless compression of
scientific data"""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}
toolchainopts = {'pic': True}

source_urls = ['http://www.hdfgroup.org/ftp/lib-external/%(namelower)s/%(version)s/src']
sources = [SOURCELOWER_TAR_GZ]

configopts = '--with-pic'

sanity_check_paths = {
'files': ['lib/libsz.a', 'lib/libsz.so', 'include/ricehdf.h', 'include/szip_adpt.h', 'include/szlib.h'],
'dirs': [],
}

moduleclass = 'tools'
39 changes: 39 additions & 0 deletions ICON/image/ecCodes-2.13.0-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# contributed by Matthias Kraushaar and Luca Marsella (CSCS)
easyblock = 'CMakeMake'

name = 'ecCodes'
version = '2.13.0'
py_maj_ver = '3'
py_min_ver = '7'
py_rev_ver = '4'
pyshortver = '%s.%s' % (py_maj_ver, py_min_ver)
pyver = '%s.%s' % (pyshortver, py_rev_ver)
versionsuffix = '-python%s' % py_maj_ver

homepage = 'https://confluence.ecmwf.int/display/ECC/ecCodes+Home'
description = """ecCodes is a package developed by ECMWF which provides an application programming interface
and a set of tools for decoding and encoding messages in the WMO GRIB and BUFR formats."""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}

source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
sources = ['%(namelower)s-%(version)s-Source.tar.gz']

builddependencies = [
('CMake', '3.14.1', '', True),
('JasPer', '2.0.14'),
('netCDF', '4.6.1'),
]

separate_build_dir = True

configopts = '-DENABLE_JPG=ON -DENABLE_NETCDF=ON -DENABLE_PYTHON=OFF'

sanity_check_paths = {
'files': ['bin/%s' % x for x in ['bufr_copy', 'bufr_dump', 'bufr_filter', 'bufr_ls',
'codes_count', 'codes_info', 'codes_split_file',
'grib_copy', 'grib_dump', 'grib_filter', 'grib_ls']],
'dirs': [],
}

moduleclass = 'tools'
32 changes: 32 additions & 0 deletions ICON/image/netCDF-4.6.1-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#
name = 'netCDF'
version = '4.6.1'

homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
description = """
NetCDF (network Common Data Form) is a set of software libraries and
machine-independent data formats that support the creation, access, and
sharing of array-oriented scientific data.
"""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'} # ('Doxygen', '1.8.13'),
toolchainopts = {'pic': True}

source_urls = ['https://github.com/Unidata/%(namelower)s-c/archive/']
sources = ['v%(version)s.tar.gz']
checksums = ['a2fabf27c72a5ee746e3843e1debbaad37cd035767eaede2045371322211eebb']

builddependencies = [
('CMake', '3.14.1', '', True),
]
dependencies = [
('HDF5', '1.10.5'),
('Szip', '2.1.1'),
]

# make sure both static and shared libs are built
configopts = ['-DBUILD_SHARED_LIBS=OFF ', '-DBUILD_SHARED_LIBS=ON ']

separate_build_dir = True

moduleclass = 'data'
20 changes: 20 additions & 0 deletions ICON/image/netCDF-Fortran-4.4.4-PGI-19.10-GCC-7.3.0-2.30.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name = 'netCDF-Fortran'
version = '4.4.4'

homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
description = """NetCDF (network Common Data Form) is a set of software
libraries and machine-independent data formats that support the creation,
access, and sharing of array-oriented scientific data."""

toolchain = {'name': 'PGI', 'version': '19.10-GCC-7.3.0-2.30'}
toolchainopts = {'pic': True}

source_urls = ['ftp://ftp.unidata.ucar.edu/pub/netcdf/', 'ftp://ftp.unidata.ucar.edu/pub/netcdf/old']
sources = [SOURCELOWER_TAR_GZ]

dependencies = [
('netCDF', '4.6.1'),
]


moduleclass = 'data'
Loading

0 comments on commit d08ba09

Please sign in to comment.