Skip to content

[libFLAME] [package list]

libFLAME/4.2-cpeGNU-24.03-amd (libFLAME-4.2-cpeGNU-24.03-amd.eb)

Install with the EasyBuild-user module:

eb libFLAME-4.2-cpeGNU-24.03-amd.eb -r
To access module help after installation and get reminded for which stacks and partitions the module is installed, use module spider libFLAME/4.2-cpeGNU-24.03-amd.

EasyConfig:

easyblock = 'ConfigureMake'

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

homepage = 'https://developer.amd.com/amd-cpu-libraries/blas-library/#libflame'

whatis = [
    'Description: AMD\'s fork of libFLAME. libFLAME is a portable library for dense matrix computations, providing much of the functionality present in LAPACK.'
]

description = """
This module provides AMD\'s fork of libFLAME. libFLAME is a portable library
for dense matrix computations, providing much of the functionality present in
LAPACK.

Note that libFLAME will conflict with the Cray LibSci library, so when using
this module you have to unload the cray-libsci module as otherwise the
Cray compiler wrappers will add LibSci to the libraries used by the
compiler.

Cray LibSci already contains BLAS, LAPACK and ScaLAPACK functionality and
should be your first choice. But this module may be useful if you run into
problems with the Cray LibSci library. Note however that software in the
LUMI stack is by default build with the Cray LibSci library, so your code
that relies on libFLAME and BLIS may not link correctly to any of the other
modules in the LUMI software stacks.
"""

toolchain = {'name': 'cpeGNU', 'version': '24.03'}

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

builddependencies = [
    ('buildtools', '%(toolchain_version)s', '', True),
    ('craype-network-none', EXTERNAL_MODULE),
]

dependencies = [
    ('aocl-utils', version),
    ('BLIS',       version, versionsuffix),
]

# Use unset FLIBS to let configure pick up LDFLAGS
preconfigopts  = 'module unload cray-libsci && '
# Configure script uses weird way of compiler vendor detection,
# And avoid using -march=native but let the compiler wrappers do their work.
preconfigopts += 'sed -e "s|CC_VENDOR=..echo.*|CC_VENDOR=gcc|" -e "s|-mtune=native ||" -i configure && '
preconfigopts += 'unset FLIBS && '
preconfigopts += 'LIBS="-lblis-mt $LIBS" '
preconfigopts += 'LDFLAGS="$LDFLAGS -L$EBROOTBLIS/lib -fopenmp -lm -lpthread -laoclutils" '
preconfigopts += 'CFLAGS="$CFLAGS -fopenmp -I${EBROOTBLIS}/include/blis" '

configopts  = '--enable-max-arg-list-hack '
configopts += '--enable-lapack2flame '
configopts += '--enable-external-lapack-interfaces '
configopts += '--enable-cblas-interfaces '
configopts += '--enable-static-build --enable-dynamic-build '
configopts += '--enable-multithreading=openmp '
configopts += '--enable-supermatrix '
configopts += '--enable-amd-flags --enable-amd-opt '

prebuildopts = 'module unload cray-libsci && '

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

postinstallcmds = [
    'mkdir -p %(installdir)s/share/licenses/%(name)s && cp AUTHORS CHANGELOG KNOWN-ISSUES LICENSE README.md README-AMD.md README-UT-SHPC.md %(installdir)s/share/licenses/%(name)s',
]

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

moduleclass = 'numlib'

[libFLAME] [package list]