From 4b6c16770a910eb8d5e66990ee4a922980d9834b Mon Sep 17 00:00:00 2001 From: sassy Date: Mon, 14 Oct 2024 12:37:05 +0100 Subject: [PATCH 1/2] adding easyconfigs: FlexiBLAS-3.4.4-NVHPC-24.9-CUDA-12.6.0.eb, OpenBLAS-0.3.27-NVHPC-24.9-CUDA-12.6.0.eb, ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb --- .../FlexiBLAS-3.4.4-NVHPC-24.9-CUDA-12.6.0.eb | 57 +++++++++++++++++++ .../OpenBLAS-0.3.27-NVHPC-24.9-CUDA-12.6.0.eb | 47 +++++++++++++++ .../ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb | 40 +++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-NVHPC-24.9-CUDA-12.6.0.eb create mode 100644 easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-NVHPC-24.9-CUDA-12.6.0.eb create mode 100644 easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb diff --git a/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-NVHPC-24.9-CUDA-12.6.0.eb b/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-NVHPC-24.9-CUDA-12.6.0.eb new file mode 100644 index 000000000000..be13ff1460a7 --- /dev/null +++ b/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-NVHPC-24.9-CUDA-12.6.0.eb @@ -0,0 +1,57 @@ +easyblock = 'Bundle' + +name = 'FlexiBLAS' +version = '3.4.4' + +homepage = 'https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release' +description = """FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation +used by a program without recompiling or relinking it.""" + +toolchain = {'name': 'NVHPC', 'version': '24.9-CUDA-12.6.0'} +local_extra_flags = "-D__ELF__" +toolchainopts = {'pic': True, 'extra_cflags': local_extra_flags, 'extra_fflags': local_extra_flags} + +builddependencies = [ + ('CMake', '3.29.3'), + ('Python', '3.12.3'), # required for running the tests +] + +dependencies = [ + ('OpenBLAS', '0.3.27'), +] + +# note: first listed backend will be used as default by FlexiBLAS, +# unless otherwise specified via easyconfig parameter flexiblas_default +local_backends = ['OpenBLAS'] + +# imkl supplies its backend via the imkl module, not as a dependency +if ARCH == 'x86_64': + local_backends.append('imkl') + +default_component_specs = {'start_dir': '%(namelower)s-%(version)s'} +sanity_check_all_components = True + +# Also build and install LAPACKE, which FlexiBLAS does not support yet +components = [ + (name, version, { + 'source_urls': ['https://github.com/mpimd-csc/flexiblas/releases/download/v%(version)s/'], + 'sources': [SOURCELOWER_TAR_GZ], + 'checksums': ['05040ae092142dd0bf38d1bb9ce33f6b475d9f9bb455e33be997932ae855c22b'], + 'backends': local_backends, + }), + ('LAPACK', '3.12.0', { + 'easyblock': 'CMakeMake', + 'source_urls': ['https://github.com/Reference-LAPACK/lapack/archive/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['eac9570f8e0ad6f30ce4b963f4f033f0f643e7c3912fc9ee6cd99120675ad48b'], + 'configopts': ('-DBUILD_SHARED_LIBS=ON -DUSE_OPTIMIZED_BLAS=ON -DLAPACKE=ON ' + '-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON ' + '-DCMAKE_INSTALL_INCLUDEDIR=%(installdir)s/include/flexiblas'), + 'sanity_check_paths': { + 'files': ['lib/liblapacke.%s' % SHLIB_EXT, 'include/flexiblas/lapacke.h'], + 'dirs': [], + }, + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-NVHPC-24.9-CUDA-12.6.0.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-NVHPC-24.9-CUDA-12.6.0.eb new file mode 100644 index 000000000000..835895f386d4 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-NVHPC-24.9-CUDA-12.6.0.eb @@ -0,0 +1,47 @@ +name = 'OpenBLAS' +version = '0.3.27' + +homepage = 'http://www.openblas.net/' +description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version." + +toolchain = {'name': 'NVHPC', 'version': '24.9-CUDA-12.6.0'} + +source_urls = [ + # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble + 'https://www.netlib.org/lapack/timing/', + 'https://github.com/xianyi/OpenBLAS/archive/', +] +sources = ['v%(version)s.tar.gz'] +patches = [ + ('large.tgz', '.'), + ('timing.tgz', '.'), + 'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch', + 'OpenBLAS-0.3.21_fix-order-vectorization.patch', + 'OpenBLAS-0.3.26_lapack_qr_noninittest.patch', + 'OpenBLAS-0.3.27_fix_zscal.patch', + 'OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch', +] +checksums = [ + {'v0.3.27.tar.gz': 'aa2d68b1564fe2b13bc292672608e9cdeeeb6dc34995512e65c3b10f4599e897'}, + {'large.tgz': 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1'}, + {'timing.tgz': '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af'}, + {'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch': + 'e6b326fb8c4a8a6fd07741d9983c37a72c55c9ff9a4f74a80e1352ce5f975971'}, + {'OpenBLAS-0.3.21_fix-order-vectorization.patch': + '08af834e5d60441fd35c128758ed9c092ba6887c829e0471ecd489079539047d'}, + {'OpenBLAS-0.3.26_lapack_qr_noninittest.patch': '4781bf1d7b239374fd8069e15b4e2c0ef0e8efaa1a7d4c33557bd5b27e5de77c'}, + {'OpenBLAS-0.3.27_fix_zscal.patch': '9210d7b66538dabaddbe1bfceb16f8225708856f60876ca5561b19d3599f9fd1'}, + {'OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch': + 'f374e41efffd592ab1c9034df9e7abf1045ed151f4fc0fd0da618ce9826f2d4b'}, +] + +builddependencies = [ + ('make', '4.4.1'), + # required by LAPACK test suite + ('Python', '3.12.3'), +] + +# extensive testing can be enabled by uncommenting the line below +# runtest = 'PATH=.:$PATH lapack-timing' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb new file mode 100644 index 000000000000..302d2e1ac751 --- /dev/null +++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb @@ -0,0 +1,40 @@ +name = 'ScaLAPACK' +version = '2.2.0' +versionsuffix = '-fb' + +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': 'nvompi', 'version': '2024.9'} +toolchainopts = {'extra_fflags': '-lpthread', 'openmp': True, 'pic': True, 'usempi': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TGZ] +patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch'] +checksums = [ + '40b9406c20735a9a3009d863318cb8d3e496fb073d201c5463df810e01ab2a57', # scalapack-2.2.0.tgz + 'f6bc3c6dee012ba4a696548a2e12b6aae932ce4fd5a142153b338839f52b5906', # ScaLAPACK-2.2.0_fix-GCC-10.patch +] + +builddependencies = [ + ('CMake', '3.29.3'), +] + +dependencies = [ + ('FlexiBLAS', '3.4.4'), +] + +# 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="$EBROOTFLEXIBLAS/lib/libflexiblas.%s" ' % SHLIB_EXT +configopts += '-DLAPACK_LIBRARIES="$EBROOTFLEXIBLAS/lib/libflexiblas.%s" ' % SHLIB_EXT + +sanity_check_paths = { + 'files': ['lib/libscalapack.%s' % SHLIB_EXT, 'lib64/libscalapack.%s' % SHLIB_EXT], + 'dirs': ["lib", "lib64"], +} + +moduleclass = 'numlib' From 286581e1bb026e452ca9d888f6ced845b0366a88 Mon Sep 17 00:00:00 2001 From: sassy Date: Tue, 15 Apr 2025 15:06:05 +0100 Subject: [PATCH 2/2] Scalarpack removed to breack circular dependency --- .../ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb deleted file mode 100644 index 302d2e1ac751..000000000000 --- a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-nvompi-2024.9-fb.eb +++ /dev/null @@ -1,40 +0,0 @@ -name = 'ScaLAPACK' -version = '2.2.0' -versionsuffix = '-fb' - -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': 'nvompi', 'version': '2024.9'} -toolchainopts = {'extra_fflags': '-lpthread', 'openmp': True, 'pic': True, 'usempi': True} - -source_urls = [homepage] -sources = [SOURCELOWER_TGZ] -patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch'] -checksums = [ - '40b9406c20735a9a3009d863318cb8d3e496fb073d201c5463df810e01ab2a57', # scalapack-2.2.0.tgz - 'f6bc3c6dee012ba4a696548a2e12b6aae932ce4fd5a142153b338839f52b5906', # ScaLAPACK-2.2.0_fix-GCC-10.patch -] - -builddependencies = [ - ('CMake', '3.29.3'), -] - -dependencies = [ - ('FlexiBLAS', '3.4.4'), -] - -# 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="$EBROOTFLEXIBLAS/lib/libflexiblas.%s" ' % SHLIB_EXT -configopts += '-DLAPACK_LIBRARIES="$EBROOTFLEXIBLAS/lib/libflexiblas.%s" ' % SHLIB_EXT - -sanity_check_paths = { - 'files': ['lib/libscalapack.%s' % SHLIB_EXT, 'lib64/libscalapack.%s' % SHLIB_EXT], - 'dirs': ["lib", "lib64"], -} - -moduleclass = 'numlib'