From 4c066e21516c2b4437c82a1020f0136b1d1b59ce Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sun, 26 Apr 2020 08:33:35 +0200 Subject: [PATCH] {toolchain} foss/2020a --- .../f/FFTW/FFTW-3.3.8-gompi-2020a.eb | 17 +++++++ easybuild/easyconfigs/f/foss/foss-2020a.eb | 27 +++++++++++ easybuild/easyconfigs/g/GCC/GCC-9.3.0.eb | 22 +++++++++ easybuild/easyconfigs/g/gompi/gompi-2020a.eb | 20 ++++++++ .../easyconfigs/h/HPL/HPL-2.3-foss-2020a.eb | 21 ++++++++ .../h/hwloc/hwloc-2.2.0-GCCcore-9.3.0.eb | 48 +++++++++++++++++++ .../libpciaccess-0.16-GCCcore-9.3.0.eb | 26 ++++++++++ .../l/libxml2/libxml2-2.9.10-GCCcore-9.3.0.eb | 28 +++++++++++ .../n/numactl/numactl-2.0.13-GCCcore-9.3.0.eb | 34 +++++++++++++ .../o/OpenBLAS/OpenBLAS-0.3.9-GCC-9.3.0.eb | 28 +++++++++++ .../o/OpenMPI/OpenMPI-4.0.3-GCC-9.3.0.eb | 24 ++++++++++ .../ScaLAPACK/ScaLAPACK-2.1.0-gompi-2020a.eb | 17 +++++++ .../xorg-macros-1.19.2-GCCcore-9.3.0.eb | 37 ++++++++++++++ 13 files changed, 349 insertions(+) create mode 100644 easybuild/easyconfigs/f/FFTW/FFTW-3.3.8-gompi-2020a.eb create mode 100644 easybuild/easyconfigs/f/foss/foss-2020a.eb create mode 100644 easybuild/easyconfigs/g/GCC/GCC-9.3.0.eb create mode 100644 easybuild/easyconfigs/g/gompi/gompi-2020a.eb create mode 100644 easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2020a.eb create mode 100644 easybuild/easyconfigs/h/hwloc/hwloc-2.2.0-GCCcore-9.3.0.eb create mode 100644 easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.16-GCCcore-9.3.0.eb create mode 100644 easybuild/easyconfigs/l/libxml2/libxml2-2.9.10-GCCcore-9.3.0.eb create mode 100644 easybuild/easyconfigs/n/numactl/numactl-2.0.13-GCCcore-9.3.0.eb create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.9-GCC-9.3.0.eb create mode 100644 easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.3-GCC-9.3.0.eb create mode 100644 easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.1.0-gompi-2020a.eb create mode 100644 easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.19.2-GCCcore-9.3.0.eb diff --git a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.8-gompi-2020a.eb b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.8-gompi-2020a.eb new file mode 100644 index 00000000000..1e3dfaa89ad --- /dev/null +++ b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.8-gompi-2020a.eb @@ -0,0 +1,17 @@ +name = 'FFTW' +version = '3.3.8' + +homepage = 'http://www.fftw.org' +description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) + in one or more dimensions, of arbitrary input size, and of both real and complex data.""" + +toolchain = {'name': 'gompi', 'version': '2020a'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303'] + +runtest = 'check' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/f/foss/foss-2020a.eb b/easybuild/easyconfigs/f/foss/foss-2020a.eb new file mode 100644 index 00000000000..2b0739b47c8 --- /dev/null +++ b/easybuild/easyconfigs/f/foss/foss-2020a.eb @@ -0,0 +1,27 @@ +easyblock = 'Toolchain' + +name = 'foss' +version = '2020a' + +homepage = 'https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain' +description = """GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK.""" + +toolchain = SYSTEM + +local_gccver = '9.3.0' + +# toolchain used to build foss dependencies +local_comp_mpi_tc = ('gompi', version) + +# we need GCC and OpenMPI as explicit dependencies instead of gompi toolchain +# because of toolchain preparation functions +dependencies = [ + ('GCC', local_gccver), + ('OpenMPI', '4.0.3', '', ('GCC', local_gccver)), + ('OpenBLAS', '0.3.9', '', ('GCC', local_gccver)), + ('FFTW', '3.3.8', '', local_comp_mpi_tc), + ('ScaLAPACK', '2.1.0', '', local_comp_mpi_tc), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/g/GCC/GCC-9.3.0.eb b/easybuild/easyconfigs/g/GCC/GCC-9.3.0.eb new file mode 100644 index 00000000000..0489a3aa7a0 --- /dev/null +++ b/easybuild/easyconfigs/g/GCC/GCC-9.3.0.eb @@ -0,0 +1,22 @@ +easyblock = 'Bundle' + +name = 'GCC' +version = '9.3.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).""" + +toolchain = SYSTEM + +dependencies = [ + ('GCCcore', version), + # binutils built on top of GCCcore, which was built on top of (dummy-built) binutils + ('binutils', '2.34', '', ('GCCcore', version)), +] + +altroot = 'GCCcore' +altversion = 'GCCcore' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/g/gompi/gompi-2020a.eb b/easybuild/easyconfigs/g/gompi/gompi-2020a.eb new file mode 100644 index 00000000000..15ee0f5a7cc --- /dev/null +++ b/easybuild/easyconfigs/g/gompi/gompi-2020a.eb @@ -0,0 +1,20 @@ +easyblock = "Toolchain" + +name = 'gompi' +version = '2020a' + +homepage = '(none)' +description = """GNU Compiler Collection (GCC) based compiler toolchain, + including OpenMPI for MPI support.""" + +toolchain = SYSTEM + +local_gccver = '9.3.0' + +# compiler toolchain dependencies +dependencies = [ + ('GCC', local_gccver), # includes both GCC and binutils + ('OpenMPI', '4.0.3', '', ('GCC', local_gccver)), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2020a.eb b/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2020a.eb new file mode 100644 index 00000000000..975ddeef5a8 --- /dev/null +++ b/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2020a.eb @@ -0,0 +1,21 @@ +name = 'HPL' +version = '2.3' + +homepage = 'https://www.netlib.org/benchmark/hpl/' +description = """HPL is a software package that solves a (random) dense linear system in double precision (64 bits) + arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available + implementation of the High Performance Computing Linpack Benchmark.""" + +toolchain = {'name': 'foss', 'version': '2020a'} +toolchainopts = {'usempi': True} + +source_urls = ['https://www.netlib.org/benchmark/%(namelower)s'] +sources = [SOURCELOWER_TAR_GZ] +# fix Make dependencies, so parallel build also works +patches = ['HPL_parallel-make.patch'] +checksums = [ + '32c5c17d22330e6f2337b681aded51637fb6008d3f0eb7c277b163fadd612830', # hpl-2.3.tar.gz + '2a5bf9c4f328049828ddecec7ba3f05a9e25d236f4212747c53bd22fea80c5e6', # HPL_parallel-make.patch +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/hwloc/hwloc-2.2.0-GCCcore-9.3.0.eb b/easybuild/easyconfigs/h/hwloc/hwloc-2.2.0-GCCcore-9.3.0.eb new file mode 100644 index 00000000000..a109e5d7a9b --- /dev/null +++ b/easybuild/easyconfigs/h/hwloc/hwloc-2.2.0-GCCcore-9.3.0.eb @@ -0,0 +1,48 @@ +easyblock = 'ConfigureMake' + +name = 'hwloc' +version = '2.2.0' + +homepage = 'https://www.open-mpi.org/projects/hwloc/' + +description = """ + The Portable Hardware Locality (hwloc) software package provides a portable + abstraction (across OS, versions, architectures, ...) of the hierarchical + topology of modern architectures, including NUMA memory nodes, sockets, shared + caches, cores and simultaneous multithreading. It also gathers various system + attributes such as cache and memory information as well as the locality of I/O + devices such as network interfaces, InfiniBand HCAs or GPUs. It primarily + aims at helping applications with gathering information about modern computing + hardware so as to exploit it accordingly and efficiently. +""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +# need to build with -fno-tree-vectorize to avoid segfaulting lstopo on Intel Skylake +# cfr. https://github.com/open-mpi/hwloc/issues/315 +toolchainopts = {'vectorize': False} + +source_urls = ['https://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/'] +sources = [SOURCE_TAR_GZ] +checksums = ['2defba03ddd91761b858cbbdc2e3a6e27b44e94696dbfa21380191328485a433'] + +builddependencies = [ + ('binutils', '2.34'), +] + +dependencies = [ + ('numactl', '2.0.13'), + ('libxml2', '2.9.10'), + ('libpciaccess', '0.16'), +] + +configopts = "--enable-libnuma=$EBROOTNUMACTL " +configopts += "--disable-cairo --disable-opencl --disable-cuda --disable-nvml --disable-gl --disable-libudev " + +sanity_check_paths = { + 'files': ['bin/lstopo', 'include/hwloc/linux.h', + 'lib/libhwloc.%s' % SHLIB_EXT], + 'dirs': ['share/man/man3'], +} +sanity_check_commands = ['lstopo'] + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.16-GCCcore-9.3.0.eb b/easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.16-GCCcore-9.3.0.eb new file mode 100644 index 00000000000..a5f69896b65 --- /dev/null +++ b/easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.16-GCCcore-9.3.0.eb @@ -0,0 +1,26 @@ +easyblock = 'ConfigureMake' + +name = 'libpciaccess' +version = '0.16' + +homepage = 'https://cgit.freedesktop.org/xorg/lib/libpciaccess/' +description = """Generic PCI access library.""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://www.x.org/releases/individual/lib/'] +sources = [SOURCE_TAR_GZ] +checksums = ['84413553994aef0070cf420050aa5c0a51b1956b404920e21b81e96db6a61a27'] + +builddependencies = [ + ('binutils', '2.34'), + ('Autotools', '20180311'), + ('xorg-macros', '1.19.2'), +] + +sanity_check_paths = { + 'files': ['include/pciaccess.h', 'lib/libpciaccess.a'], + 'dirs': ['lib/pkgconfig'], +} + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/l/libxml2/libxml2-2.9.10-GCCcore-9.3.0.eb b/easybuild/easyconfigs/l/libxml2/libxml2-2.9.10-GCCcore-9.3.0.eb new file mode 100644 index 00000000000..53b484f969b --- /dev/null +++ b/easybuild/easyconfigs/l/libxml2/libxml2-2.9.10-GCCcore-9.3.0.eb @@ -0,0 +1,28 @@ +name = 'libxml2' +version = '2.9.10' + +homepage = 'http://xmlsoft.org/' + +description = """ + Libxml2 is the XML C parser and toolchain developed for the Gnome project + (but usable outside of the Gnome platform). +""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = [ + 'http://xmlsoft.org/sources/', + 'http://xmlsoft.org/sources/old/' +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f'] + +builddependencies = [('binutils', '2.34')] + +dependencies = [ + ('XZ', '5.2.5'), + ('zlib', '1.2.11'), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/n/numactl/numactl-2.0.13-GCCcore-9.3.0.eb b/easybuild/easyconfigs/n/numactl/numactl-2.0.13-GCCcore-9.3.0.eb new file mode 100644 index 00000000000..8bbab9492c6 --- /dev/null +++ b/easybuild/easyconfigs/n/numactl/numactl-2.0.13-GCCcore-9.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'numactl' +version = '2.0.13' + +homepage = 'https://github.com/numactl/numactl' + +description = """ + The numactl program allows you to run your application program on specific + cpu's and memory nodes. It does this by supplying a NUMA memory policy to + the operating system before running your program. The libnuma library provides + convenient ways for you to add NUMA memory policies into your own program. +""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/numactl/numactl/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['97ee012b2f294903530424b4ff7f28bcaad6a356897ce8777383f87e5c2e325d'] + +builddependencies = [ + ('binutils', '2.34'), + ('Autotools', '20180311'), +] + +preconfigopts = "./autogen.sh && " + +sanity_check_paths = { + 'files': ['bin/numactl', 'bin/numastat', 'lib/libnuma.%s' % SHLIB_EXT, 'lib/libnuma.a'], + 'dirs': ['share/man', 'include'] +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.9-GCC-9.3.0.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.9-GCC-9.3.0.eb new file mode 100644 index 00000000000..911b346109c --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.9-GCC-9.3.0.eb @@ -0,0 +1,28 @@ +name = 'OpenBLAS' +version = '0.3.9' + +homepage = 'https://xianyi.github.com/OpenBLAS/' +description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version." + +toolchain = {'name': 'GCC', 'version': '9.3.0'} + +source_urls = [ + # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble + 'https://www.netlib.org/lapack/timing/', + 'https://github.com/xianyi/OpenBLAS/archive/', +] +sources = ['v%(version)s.tar.gz'] +patches = [ + ('large.tgz', '.'), + ('timing.tgz', '.'), +] +checksums = [ + '17d4677264dfbc4433e97076220adc79b050e4f8a083ea3f853a53af253bc380', # v0.3.9.tar.gz + 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1', # large.tgz + '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af', # timing.tgz +] + +# extensive testing can be enabled by uncommenting the line below +# runtest = 'PATH=.:$PATH lapack-timing' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.3-GCC-9.3.0.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.3-GCC-9.3.0.eb new file mode 100644 index 00000000000..6426e2d34ca --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.3-GCC-9.3.0.eb @@ -0,0 +1,24 @@ +name = 'OpenMPI' +version = '4.0.3' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'GCC', 'version': '9.3.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['6346bf976001ad274c7e018d6cc35c92bbb9426d8f7754fac00a17ea5ac8eebc'] + +dependencies = [ + ('zlib', '1.2.11'), + ('hwloc', '2.2.0') +] + +# disable MPI1 compatibility for now, see what breaks... +# configopts = '--enable-mpi1-compatibility ' + +# to enable SLURM integration (site-specific) +# configopts += '--with-slurm --with-pmi=/usr/include/slurm --with-pmi-libdir=/usr' + +moduleclass = 'mpi' diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.1.0-gompi-2020a.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.1.0-gompi-2020a.eb new file mode 100644 index 00000000000..5ed0ad1f454 --- /dev/null +++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.1.0-gompi-2020a.eb @@ -0,0 +1,17 @@ +name = 'ScaLAPACK' +version = '2.1.0' + +homepage = 'https://www.netlib.org/scalapack/' +description = """The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines + redesigned for distributed memory MIMD parallel computers.""" + +toolchain = {'name': 'gompi', 'version': '2020a'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TGZ] +checksums = ['61d9216cf81d246944720cfce96255878a3f85dec13b9351f1fa0fd6768220a6'] + +dependencies = [('OpenBLAS', '0.3.9')] + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.19.2-GCCcore-9.3.0.eb b/easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.19.2-GCCcore-9.3.0.eb new file mode 100644 index 00000000000..35d18f46f79 --- /dev/null +++ b/easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.19.2-GCCcore-9.3.0.eb @@ -0,0 +1,37 @@ +## +# This is a contribution from DeepThought HPC Service, Flinders University, Adelaide, Australia +# Homepage: https://staff.flinders.edu.au/research/deep-thought +# +# Authors:: Robert Qiao +# License:: Custom +# +# Notes:: +## + +easyblock = 'ConfigureMake' + +name = 'xorg-macros' +version = '1.19.2' + +homepage = 'https://cgit.freedesktop.org/xorg/util/macros' +description = """X.org macros utilities.""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://gitlab.freedesktop.org/xorg/util/macros/-/archive/util-macros-%(version)s'] +sources = ['macros-util-macros-%(version)s.tar.gz'] +checksums = ['326e51a5d673e3d9cc7f139aee469a11e18ea060b1d06c22694612e68a2089b1'] + +builddependencies = [ + ('binutils', '2.34'), + ('Autotools', '20180311'), +] + +preconfigopts = './autogen.sh && ' + +sanity_check_paths = { + 'files': ['share/pkgconfig/xorg-macros.pc'], + 'dirs': [], +} + +moduleclass = 'devel'