# IT4Innovations
# LK 2023

easyblock = 'CMakeMake'

name = 'ScaLAPACK'
version = '3.0'
versionsuffix = '-CUDA-12.2.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': 'intel', 'version': '2023a'}
toolchainopts = {'pic': True}

# https://github.com/amd/scalapack/archive/3.0.tar.gz
source_urls = ['https://github.com/amd/scalapack/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f']

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

dependencies = [
#    ('OpenMPI', '4.1.5', '-CUDA-12.2.0'),
    ('BLIS', '3.1', '-amd'),
    ('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-mt.a" '
configopts += '-DLAPACK_LIBRARIES="$EBROOTLIBFLAME/lib/libflame.a" '
configopts += '-DCMAKE_C_COMPILER=mpicc '
configopts += '-DCMAKE_Fortran_COMPILER=mpif90 '
configopts += '-DUSE_OPTIMIZED_LAPACK_BLAS=ON '
configopts += '-DUSE_F2C=ON '
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'