Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions easybuild/easyconfigs/b/BLIS/BLIS-0.8.0-GCC-10.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
easyblock = 'ConfigureMake'

name = 'BLIS'
version = '0.8.0'

homepage = 'https://github.com/flame/blis/'
description = """BLIS is a portable software framework for instantiating high-performance
BLAS-like dense linear algebra libraries."""

toolchain = {'name': 'GCC', 'version': '10.2.0'}

source_urls = ['https://github.com/flame/blis/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['5e05868c4a6cf5032a7492f8861653e939a8f907a4fa524bbb6e14394e170a3d']

builddependencies = [('Python', '3.8.6')]

configopts = '--enable-cblas --enable-threading=openmp --enable-shared CC="$CC" auto'

runtest = 'check'

sanity_check_paths = {
'files': ['include/blis/cblas.h', 'include/blis/blis.h',
'lib/libblis.a', 'lib/libblis.%s' % SHLIB_EXT],
'dirs': [],
}

modextrapaths = {'CPATH': 'include/blis'}

moduleclass = 'numlib'
31 changes: 31 additions & 0 deletions easybuild/easyconfigs/g/gobff/gobff-2020b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
easyblock = "Toolchain"

name = 'gobff'
version = '2020b'

homepage = '(none)'
description = 'GCC and GFortran based compiler toolchain with OpenMPI, BLIS, libFLAME, ScaLAPACK and FFTW.'

toolchain = SYSTEM

local_comp_name = 'GCC'
local_comp_version = '10.2.0'
local_comp = (local_comp_name, local_comp_version)
local_blisver = '0.8.0'
local_libflamever = '5.2.0'

# toolchain used to build dependencies
local_comp_mpi_tc_name = 'gompi'
local_comp_mpi_tc = (local_comp_mpi_tc_name, version)

# compiler toolchain dependencies
dependencies = [
local_comp,
('OpenMPI', '4.0.5', '', local_comp), # part of gompi toolchain
('BLIS', local_blisver, '', local_comp),
('libFLAME', local_libflamever, '', local_comp),
('ScaLAPACK', '2.1.0', '-bf', local_comp_mpi_tc),
('FFTW', '3.3.8', '', local_comp_mpi_tc),
]

moduleclass = 'toolchain'
21 changes: 21 additions & 0 deletions easybuild/easyconfigs/h/HPL/HPL-2.3-gobff-2020b.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': 'gobff', 'version': '2020b'}
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'
53 changes: 53 additions & 0 deletions easybuild/easyconfigs/l/libFLAME/libFLAME-5.2.0-GCC-10.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
easyblock = 'ConfigureMake'

name = 'libFLAME'
version = '5.2.0'

homepage = 'https://developer.amd.com/amd-cpu-libraries/blas-library/#libflame'
description = """libFLAME is a portable library for dense matrix computations,
providing much of the functionality present in LAPACK."""

toolchain = {'name': 'GCC', 'version': '10.2.0'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/flame/libflame/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['997c860f351a5c7aaed8deec00f502167599288fd0559c92d5bfd77d0b4d475c']

# '--enable-max-arg-list-hack --enable-dynamic-build' requires 'file' function from GNU Make 4.x
builddependencies = [
('binutils', '2.35'),
('Python', '3.8.6'),
('make', '4.3'), # needed on Cent OS 7 where make 3 is installed
]

dependencies = [('BLIS', '0.8.0')]

# Use unset FLIBS to let configure pick up LDFLAGS
preconfigopts = 'unset FLIBS && '
preconfigopts += 'LIBS="-lblis $LIBS" '
preconfigopts += 'LDFLAGS="$LDFLAGS -L$EBROOTBLIS/lib -fopenmp -lm -lpthread" '
preconfigopts += 'CFLAGS="$CFLAGS -I$EBROOTBLIS/include/blis" '

configopts = '--enable-max-arg-list-hack '
configopts += '--enable-lapack2flame '
configopts += '--enable-external-lapack-interfaces '
configopts += '--enable-cblas-interfaces '
configopts += '--enable-dynamic-build '
configopts += '--enable-multithreading=openmp '

# libFLAME C++ Template API tests
# runtest = 'checkcpp LIBBLAS=$EBROOTBLIS/lib/libblis.a'

# sanity_check_commands = [
# 'cd %(builddir)s/%(namelower)s-%(version)s/test '
# '&& make LIBBLAS=$EBROOTBLIS/lib/libblis-mt.so LDFLAGS="-fopenmp -lm -lpthread" '
# '&& ./test_libfame.x'
# ]

sanity_check_paths = {
'files': ['include/FLAME.h', 'lib/libflame.a', 'lib/libflame.%s' % SHLIB_EXT],
'dirs': ['lib'],
}

moduleclass = 'numlib'
41 changes: 41 additions & 0 deletions easybuild/easyconfigs/m/make/make-4.3-GCC-10.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
##
# This file is an EasyBuild recipy as per https://github.com/easybuilders/easybuild
#
# Copyright:: Copyright 2012-2014 Uni.Lu/LCSB, NTUA
# Authors:: Fotis Georgatos <[email protected]>
# License:: MIT/GPL
# $Id$
#
# This work implements a part of the HPCBIOS project and is a component of the policy:
# http://hpcbios.readthedocs.org/en/latest/
##
easyblock = 'ConfigureMake'

name = 'make'
version = '4.3'

homepage = 'https://www.gnu.org/software/make/make.html'
description = "GNU version of make utility"

toolchain = {'name': 'GCC', 'version': '10.2.0'}


source_urls = [GNU_SOURCE]
sources = [SOURCE_TAR_GZ]
checksums = ['e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19']

builddependencies = [('binutils', '2.35')]

postinstallcmds = ["cd %(installdir)s/bin && ln -s make gmake"]

sanity_check_paths = {
'files': ['bin/gmake', 'bin/make'],
'dirs': []
}

sanity_check_commands = [
"gmake --help",
"make --help",
]

moduleclass = 'devel'
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name = 'ScaLAPACK'
version = '2.1.0'
versionsuffix = '-bf'

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': '2020b'}
toolchainopts = {'pic': True}

source_urls = [homepage]
sources = [SOURCELOWER_TGZ]
patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch']
checksums = [
'61d9216cf81d246944720cfce96255878a3f85dec13b9351f1fa0fd6768220a6', # scalapack-2.1.0.tgz
'bbb713c9fcabac802811c7f2c3a957c2d5d19dfd118ed1f6578c1436b82c7c43', # ScaLAPACK-2.1.0_fix-GCC-10.patch
]

builddependencies = [
('CMake', '3.18.4'),
]

dependencies = [
('BLIS', '0.8.0'),
('libFLAME', '5.2.0'),
]

# Config Opts based on AOCL User Guide:
# https://developer.amd.com/wp-content/resources/AOCL_User%20Guide_2.2.pdf

configopts = '-DBUILD_SHARED_LIBS=ON '
configopts += '-DBLAS_LIBRARIES="$EBROOTBLIS/lib/libblis.a" '
configopts += '-DLAPACK_LIBRARIES="$EBROOTLIBFLAME/lib/libflame.a" '
configopts += '-DCMAKE_C_COMPILER=mpicc '
configopts += '-DCMAKE_Fortran_COMPILER=mpif90 '
configopts += '-DCMAKE_Fortran_FLAGS="-lpthread -fopenmp $DCMAKE_Fortran_FLAGS" '

sanity_check_paths = {
'files': ['lib/libscalapack.%s' % SHLIB_EXT, 'lib64/libscalapack.%s' % SHLIB_EXT],
'dirs': ["lib", "lib64"],
}

moduleclass = 'numlib'
6 changes: 6 additions & 0 deletions test/easyconfigs/easyconfigs.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,12 @@ def check_dep_vars(self, dep, dep_vars):
if len(blis_vsuff_vars) == 1:
dep_vars = dict((k, v) for (k, v) in dep_vars.items() if k != blis_vsuff_vars[0])

# filter out ScaLAPACK with -bf versionsuffix, used in gobff toolchain
if dep == 'ScaLAPACK':
bf_vsuff_vars = [v for v in dep_vars.keys() if '; versionsuffix: -bf' in v]
if len(bf_vsuff_vars) == 1:
dep_vars = dict((k, v) for (k, v) in dep_vars.items() if k != bf_vsuff_vars[0])

# for some dependencies, we allow exceptions for software that depends on a particular version,
# as long as that's indicated by the versionsuffix
if dep in ['ASE', 'Boost', 'Java', 'Lua', 'PLUMED', 'PyTorch', 'R', 'TensorFlow'] and len(dep_vars) > 1:
Expand Down