Skip to content

[ELPA] [package list]

ELPA/2024.05.001-cpeGNU-24.03-rocm (ELPA-2024.05.001-cpeGNU-24.03-rocm.eb)

Install with the EasyBuild-user module:

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

EasyConfig:

# Contributed by Luca Marsella (CSCS)
# Some adaptations by Kurt Lust (University of Antwerpen and LUMI consortium)
# GPU version adapted for LUMI
easyblock = 'ConfigureMake'

local_ELPA_version = '2024.05.001'

name =    'ELPA'
version = local_ELPA_version
versionsuffix = '-rocm'

homepage = 'http://elpa.mpcdf.mpg.de'

whatis = [
    "Description: ELPA - Eigenvalue SoLvers for Petaflop-Applications",
]

description = """
The publicly available ELPA library provides highly efficient and highly
scalable direct eigensolvers for symmetric matrices. Though especially designed
for use for PetaFlop/s applications solving large problem sizes on massively
parallel supercomputers, ELPA eigensolvers have proven to be also very efficient
for smaller matrices. All major architectures are supported.

ELPA provides static and shared libraries with and without OpenMP support
and with and without MPI. GPU kernels are not included in this module.
"""

docurls = [
    'Manual pages in section 1 and 3'
]

toolchain = {'name': 'cpeGNU', 'version': '24.03'}
toolchainopts = {'usempi': True, 'openmp': False}

source_urls = ['https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/%(version)s/']
sources =  ['elpa-%(version)s.tar.gz']
checksums = ['9caf41a3e600e2f6f4ce1931bd54185179dade9c171556d0c9b41bbc6940f2f6']

builddependencies = [ 
    ('buildtools', '%(toolchain_version)s', '', True),
]

dependencies = [
    ('cray-libsci', EXTERNAL_MODULE),
    ('rocm',        EXTERNAL_MODULE),
]

configopts = ' '.join([
    'CPP=cpp CC=cc CXX=hipcc FC=ftn',
    'CFLAGS="-g $CFLAGS"',
    'FCFLAGS="-g $FCFLAGS"',
    'CXXFLAGS="-g --offload-arch=gfx90a -std=c++17 -I$ROCM_PATH/include/hip -I$ROCM_PATH/include/ -I$ROCM_PATH/include/rocsolver -I$CRAY_MPICH_DIR/include"',
    '--enable-static',
    '--disable-generic',
    '--disable-sse',
    '--disable-avx',
    '--enable-avx2',
    '--disable-avx512',
    '--enable-amd-gpu-kernels',
    '--with-AMD-gpu-support-only',
    '--enable-gpu-streams=amd',
    '--enable-hipcub',
    '--enable-single-precision ',
    '--disable-openmp',
    '--with-mpi=yes',
    '--enable-cuda-aware-mpi',
# Disable hipblas because detection of the v3 api is a completly broken test
# copy-pasted from the rocblas one, with the wrong include and floating point type.
#    '--enable-marshalling-hipblas-library',
])

prebuildopts = 'export CPATH=$ROCM_PATH/include/hipblas && make clean && '

maxparallel = 16

sanity_check_paths = {
    'files': ['lib/libelpa.a', 'lib/libelpa.so'],
    'dirs':  ['bin', 'lib/pkgconfig',
              'include/%(namelower)s-%(version)s/%(namelower)s', 'include/%(namelower)s-%(version)s/modules',]
}

modextrapaths = {
    'CPATH': ['include/elpa-%(version)s']
}

modextravars = {
    'ELPA_INCLUDE_DIR': '%(installdir)s/include/elpa-%(version)s',
}

moduleclass = 'math'

[ELPA] [package list]