Skip to content

Commit

Permalink
Merge pull request #10483 from boegel/20200426083330_new_pr_HPL23
Browse files Browse the repository at this point in the history
{toolchain} foss/2020a
  • Loading branch information
akesandgren authored Apr 26, 2020
2 parents bda47bf + 4c066e2 commit 293b713
Show file tree
Hide file tree
Showing 13 changed files with 349 additions and 0 deletions.
17 changes: 17 additions & 0 deletions easybuild/easyconfigs/f/FFTW/FFTW-3.3.8-gompi-2020a.eb
Original file line number Diff line number Diff line change
@@ -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'
27 changes: 27 additions & 0 deletions easybuild/easyconfigs/f/foss/foss-2020a.eb
Original file line number Diff line number Diff line change
@@ -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'
22 changes: 22 additions & 0 deletions easybuild/easyconfigs/g/GCC/GCC-9.3.0.eb
Original file line number Diff line number Diff line change
@@ -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'
20 changes: 20 additions & 0 deletions easybuild/easyconfigs/g/gompi/gompi-2020a.eb
Original file line number Diff line number Diff line change
@@ -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'
21 changes: 21 additions & 0 deletions easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2020a.eb
Original file line number Diff line number Diff line change
@@ -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'
48 changes: 48 additions & 0 deletions easybuild/easyconfigs/h/hwloc/hwloc-2.2.0-GCCcore-9.3.0.eb
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
@@ -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'
28 changes: 28 additions & 0 deletions easybuild/easyconfigs/l/libxml2/libxml2-2.9.10-GCCcore-9.3.0.eb
Original file line number Diff line number Diff line change
@@ -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'
34 changes: 34 additions & 0 deletions easybuild/easyconfigs/n/numactl/numactl-2.0.13-GCCcore-9.3.0.eb
Original file line number Diff line number Diff line change
@@ -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'
28 changes: 28 additions & 0 deletions easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.9-GCC-9.3.0.eb
Original file line number Diff line number Diff line change
@@ -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'
24 changes: 24 additions & 0 deletions easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.3-GCC-9.3.0.eb
Original file line number Diff line number Diff line change
@@ -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'
17 changes: 17 additions & 0 deletions easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.1.0-gompi-2020a.eb
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
@@ -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 <rob.qiao@flinders.edu.au>
# 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'

0 comments on commit 293b713

Please sign in to comment.