Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

{toolchain} gobff/2020.11 + gobff/2020.06-amd (toolchains with BLIS + libFLAME) #11761

Merged
30 changes: 30 additions & 0 deletions easybuild/easyconfigs/b/BLIS/BLIS-0.8.0-GCC-9.3.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': '9.3.0'}

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

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

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'
39 changes: 39 additions & 0 deletions easybuild/easyconfigs/b/BLIS/BLIS-2.2-GCC-9.3.0-amd.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
easyblock = 'ConfigureMake'

name = 'BLIS'
version = '2.2'
versionsuffix = '-amd'

homepage = 'https://developer.amd.com/amd-cpu-libraries/blas-library/'
description = """AMD's fork of BLIS. BLIS is a portable software framework for instantiating high-performance
BLAS-like dense linear algebra libraries."""

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

source_urls = ['https://github.com/amd/blis/archive/']
sources = ['%(version)s.tar.gz']
patches = ['BLIS-2.2-amd_fix-undefined-reference-blist-abort.patch']
checksums = [
'e1feb60ac919cf6d233c43c424f6a8a11eab2c62c2c6e3f2652c15ee9063c0c9', # 2.2.tar.gz
# BLIS-2.2-amd_fix-undefined-reference-blist-abort.patch
'e879bd79e4438f7e6905461af1d483d27d14945eb9e75509b22c7584b8ba93c4',
]

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

# Build Serial and multithreaded library
configopts = ['--enable-cblas --enable-shared CC="$CC" auto',
'--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,
'lib/libblis-mt.a', 'lib/libblis-mt.%s' % SHLIB_EXT],
'dirs': [],
}

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

moduleclass = 'numlib'
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
fix undefined reference to 'blis_abort'

see https://github.com/flame/blis/issues/428 + https://github.com/flame/blis/pull/429

--- blis-2.2.orig/frame/base/bli_error.h 2020-12-07 19:40:33.936990613 +0100
+++ blis-2.2/frame/base/bli_error.h 2020-12-07 19:45:35.079406108 +0100
@@ -40,6 +40,7 @@

void bli_print_msg( char* str, char* file, guint_t line );
void bli_abort( void );
+BLIS_EXPORT_BLIS void bli_abort( void );

char* bli_error_string_for_code( gint_t code );

25 changes: 25 additions & 0 deletions easybuild/easyconfigs/f/FFTW/FFTW-3.3.8-gompi-2020a-amd.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name = 'FFTW'
version = '3.3.8'
local_amd_fftw_ver = '2.2'
versionsuffix = '-amd'

homepage = 'https://developer.amd.com/amd-aocl/fftw/'
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.
AMD FFTW includes selective kernels and routines optimized for the AMD EPYC™ processor family."""

toolchain = {'name': 'gompi', 'version': '2020a'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/amd/amd-fftw/archive/']
sources = [{
'download_filename': '%s.tar.gz' % local_amd_fftw_ver,
'filename': 'amd-fftw-%s.tar.gz' % local_amd_fftw_ver,
}]
checksums = ['de9d777236fb290c335860b458131678f75aa0799c641490c644c843f0e246f8']

configopts = '--enable-amd-opt'

runtest = 'check'

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

name = 'gobff'
version = '2020.06'
versionsuffix = '-amd'

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 = '9.3.0'
local_comp = (local_comp_name, local_comp_version)
local_blisver = '2.2'

# toolchain used to build dependencies
local_comp_mpi_tc_name = 'gompi'
local_comp_mpi_tc_ver = '2020a'
local_comp_mpi_tc = (local_comp_mpi_tc_name, local_comp_mpi_tc_ver)

# compiler toolchain dependencies
dependencies = [
local_comp,
('OpenMPI', '4.0.3', '', local_comp), # part of gompi toolchain
('BLIS', local_blisver, '-amd', local_comp),
('libFLAME', local_blisver, '-amd', local_comp),
('ScaLAPACK', '2.2', '-amd', local_comp_mpi_tc),
('FFTW', '3.3.8', '-amd', local_comp_mpi_tc),
]

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

name = 'gobff'
version = '2020.11'

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 = '9.3.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_ver = '2020a'
local_comp_mpi_tc = (local_comp_mpi_tc_name, local_comp_mpi_tc_ver)

# compiler toolchain dependencies
dependencies = [
local_comp,
('OpenMPI', '4.0.3', '', 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-2020.06-amd.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': '2020.06-amd'}
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'
21 changes: 21 additions & 0 deletions easybuild/easyconfigs/h/HPL/HPL-2.3-gobff-2020.11.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': '2020.11'}
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'
54 changes: 54 additions & 0 deletions easybuild/easyconfigs/l/libFLAME/libFLAME-2.2-GCC-9.3.0-amd.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
easyblock = 'ConfigureMake'

name = 'libFLAME'
version = '2.2'
versionsuffix = '-amd'

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

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

source_urls = ['https://github.com/amd/libflame/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['12b9c1f92d2c2fa637305aaa15cf706652406f210eaa5cbc17aaea9fcfa576dc']

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

dependencies = [('BLIS', '2.2', versionsuffix)]

# Use unset FLIBS to let configure pick up LDFLAGS
preconfigopts = 'unset FLIBS && '
preconfigopts += 'LIBS="-lblis-mt $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'
53 changes: 53 additions & 0 deletions easybuild/easyconfigs/l/libFLAME/libFLAME-5.2.0-GCC-9.3.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': '9.3.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.34'),
('Python', '3.8.2'),
('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-9.3.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 <fotis@cern.ch>
# 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': '9.3.0'}


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

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

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'
Loading