From e1f99a49558f08ed848a598beb4a425aa06f4ebd Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Mon, 7 Oct 2024 17:03:14 +0200 Subject: [PATCH 01/10] Add netCDF for 2024a --- .../netCDF-C++4-4.3.1-gompi-2024a.eb | 28 ++++++++++ .../netCDF-Fortran-4.6.1-gompi-2024a.eb | 28 ++++++++++ .../n/netCDF/netCDF-4.9.2-gompi-2024a.eb | 54 +++++++++++++++++++ .../netcdf4-python-1.7.1.post2-foss-2024a.eb | 54 +++++++++++++++++++ ...st2_relax_tolerance_compression_test.patch | 15 ++++++ .../p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb | 35 ++++++++++++ 6 files changed, 214 insertions(+) create mode 100644 easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb create mode 100644 easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb create mode 100644 easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb create mode 100644 easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb create mode 100644 easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch create mode 100644 easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb diff --git a/easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb b/easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb new file mode 100644 index 00000000000..1b9a80b189c --- /dev/null +++ b/easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'netCDF-C++4' +version = '4.3.1' + +homepage = 'https://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data.""" + +toolchain = {'name': 'gompi', 'version': '2024a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc'] + +dependencies = [ + ('netCDF', '4.9.2'), +] + + +sanity_check_paths = { + 'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.so'], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb b/easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb new file mode 100644 index 00000000000..2bc6e207794 --- /dev/null +++ b/easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb @@ -0,0 +1,28 @@ +name = 'netCDF-Fortran' +version = '4.6.1' + +homepage = 'https://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data.""" + +toolchain = {'name': 'gompi', 'version': '2024a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://github.com/Unidata/%(namelower)s/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['40b534e0c81b853081c67ccde095367bd8a5eead2ee883431331674e7aa9509f'] + +builddependencies = [ + ('M4', '1.4.19'), +] +dependencies = [ + ('netCDF', '4.9.2'), + ('bzip2', '1.0.8'), +] + +# (too) parallel build fails, but single-core build is fairly quick anyway (~1min) +parallel = 1 + + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb new file mode 100644 index 00000000000..2229ea87111 --- /dev/null +++ b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb @@ -0,0 +1,54 @@ +name = 'netCDF' +version = '4.9.2' + +homepage = 'https://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data.""" + +toolchain = {'name': 'gompi', 'version': '2024a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://github.com/Unidata/%(namelower)s-c/archive/'] +sources = ['v%(version)s.tar.gz'] +patches = ['%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch'] +checksums = [ + {'v4.9.2.tar.gz': 'bc104d101278c68b303359b3dc4192f81592ae8640f1aee486921138f7f88cb7'}, + {'%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch': + '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a'}, +] + +builddependencies = [ + ('Autotools', '20231222'), + ('CMake', '3.29.3'), + ('Doxygen', '1.11.0'), +] +dependencies = [ + ('HDF5', '1.14.5'), + ('cURL', '8.7.1'), + ('Szip', '2.1.1'), + ('zstd', '1.5.6'), + ('bzip2', '1.0.8'), + ('libxml2', '2.12.7'), +] + +# disable Szip, zlib parallel I/O tests, since these can hang on some systems, e.g. generoso +# see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834 +# and https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172 +preconfigopts = ("sed -i -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo \"skipped by EasyBuild\"|g'" + " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo \"skipped by EasyBuild\"|g'" + " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo \"skipped by EasyBuild\"|g'" + " %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&") + +# make sure both static and shared libs are built +# and disable "remote" tests that access a unreliable external test server over internet +configopts = [ + "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF", + "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON", +] + +# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests +pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 " +runtest = 'test' + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb b/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb new file mode 100644 index 00000000000..a7958767777 --- /dev/null +++ b/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb @@ -0,0 +1,54 @@ +easyblock = 'PythonBundle' + +name = 'netcdf4-python' +version = '1.7.1.post2' + + +homepage = 'https://unidata.github.io/netcdf4-python/' +description = "Python/numpy interface to netCDF." + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'usempi': True} + +dependencies = [ + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('netCDF', '4.9.2'), + ('cURL', '8.7.1'), + ('mpi4py', '4.0.0'), +] + +fix_python_shebang_for = ['bin/*'] +sanity_pip_check = True +use_pip = True + +exts_list = [ + ('cftime', '1.6.4', { + 'checksums': ['e325406193758a7ed67308deb52e727782a19e384e183378e7ff62098be0aedc'], + }), + (name, version, { + 'patches': [ + 'netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch', + ], + 'source_tmpl': 'netcdf4-%(version)s.tar.gz', + 'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'], + 'checksums': [ + {'netcdf4-1.7.1.post2.tar.gz': '37d557e36654889d7020192bfb56f9d5f93894cb32997eb837ae586c538fd7b6'}, + {'netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch': + '7faa7e839ad1e816ffd0153e4b76b43ebce3e14d35f0534f812168dfaa78316c'}, + ], + }), +] + +sanity_check_paths = { + 'files': ['bin/nc3tonc4', 'bin/nc4tonc3', 'bin/ncinfo'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "nc4tonc3 --help", + "nc3tonc4 --help", + "ncinfo --help", +] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch b/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch new file mode 100644 index 00000000000..be4deb77f96 --- /dev/null +++ b/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch @@ -0,0 +1,15 @@ +# Relax tolerance in the compression_szip test to avoid fails on some systems. +# author: maxim-masterov (SURF) +# +diff -Nru netcdf4-1.7.1.post2.orig/test/test_compression_szip.py netcdf4-1.7.1.post2/test/test_compression_szip.py +--- netcdf4-1.7.1.post2.orig/test/test_compression_szip.py 2024-10-07 16:01:21.276893761 +0200 ++++ netcdf4-1.7.1.post2/test/test_compression_szip.py 2024-10-07 16:27:47.424436617 +0200 +@@ -35,7 +35,7 @@ + assert_almost_equal(datarr,f.variables['data'][:]) + assert f.variables['data'].filters() ==\ + {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False} +- assert_almost_equal(datarr,f.variables['data_szip'][:]) ++ assert_almost_equal(datarr,f.variables['data_szip'][:], 6) + dtest = {'zlib': False, 'szip': {'coding': 'ec', 'pixels_per_block': 32}, 'zstd': False, 'bzip2': False, 'blosc': False, 'shuffle': False, 'complevel': 0, 'fletcher32': False} + assert f.variables['data_szip'].filters() == dtest + f.close() diff --git a/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb b/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb new file mode 100644 index 00000000000..b586cfd0da4 --- /dev/null +++ b/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'PnetCDF' +version = '1.13.0' + +homepage = 'https://parallel-netcdf.github.io/' +description = "Parallel netCDF: A Parallel I/O Library for NetCDF File Access" + +toolchain = {'name': 'gompi', 'version': '2024a'} + +source_urls = ['https://parallel-netcdf.github.io/Release'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['aba0f1c77a51990ba359d0f6388569ff77e530ee574e40592a1e206ed9b2c491'] + +builddependencies = [ + ('Autotools', '20231222'), + ('Perl', '5.38.2'), +] + +preconfigopts = "autoreconf -f -i && " +configopts = [ + '', + '--enable-shared', +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['ncmpidiff', 'ncmpidump', 'ncmpigen', 'ncoffsets', + 'ncvalidator', 'pnetcdf-config', 'pnetcdf_version']] + + ['lib/lib%(namelower)s.a', 'lib/lib%%(namelower)s.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +modextrapaths = {'PNETCDF': ''} + +moduleclass = 'data' From 1a89001e6563db37831be579d76cb10691e101b3 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Mon, 7 Oct 2024 17:08:19 +0200 Subject: [PATCH 02/10] Revert "Add netCDF for 2024a" This reverts commit e1f99a49558f08ed848a598beb4a425aa06f4ebd. --- .../netCDF-C++4-4.3.1-gompi-2024a.eb | 28 ---------- .../netCDF-Fortran-4.6.1-gompi-2024a.eb | 28 ---------- .../n/netCDF/netCDF-4.9.2-gompi-2024a.eb | 54 ------------------- .../netcdf4-python-1.7.1.post2-foss-2024a.eb | 54 ------------------- ...st2_relax_tolerance_compression_test.patch | 15 ------ .../p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb | 35 ------------ 6 files changed, 214 deletions(-) delete mode 100644 easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb delete mode 100644 easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb delete mode 100644 easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb delete mode 100644 easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb delete mode 100644 easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch delete mode 100644 easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb diff --git a/easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb b/easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb deleted file mode 100644 index 1b9a80b189c..00000000000 --- a/easybuild/easyconfigs/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2024a.eb +++ /dev/null @@ -1,28 +0,0 @@ -easyblock = 'ConfigureMake' - -name = 'netCDF-C++4' -version = '4.3.1' - -homepage = 'https://www.unidata.ucar.edu/software/netcdf/' -description = """NetCDF (network Common Data Form) is a set of software libraries - and machine-independent data formats that support the creation, access, and sharing of array-oriented - scientific data.""" - -toolchain = {'name': 'gompi', 'version': '2024a'} -toolchainopts = {'pic': True} - -source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/'] -sources = ['v%(version)s.tar.gz'] -checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc'] - -dependencies = [ - ('netCDF', '4.9.2'), -] - - -sanity_check_paths = { - 'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.so'], - 'dirs': [], -} - -moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb b/easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb deleted file mode 100644 index 2bc6e207794..00000000000 --- a/easybuild/easyconfigs/n/netCDF-Fortran/netCDF-Fortran-4.6.1-gompi-2024a.eb +++ /dev/null @@ -1,28 +0,0 @@ -name = 'netCDF-Fortran' -version = '4.6.1' - -homepage = 'https://www.unidata.ucar.edu/software/netcdf/' -description = """NetCDF (network Common Data Form) is a set of software libraries - and machine-independent data formats that support the creation, access, and sharing of array-oriented - scientific data.""" - -toolchain = {'name': 'gompi', 'version': '2024a'} -toolchainopts = {'pic': True, 'usempi': True} - -source_urls = ['https://github.com/Unidata/%(namelower)s/archive/'] -sources = ['v%(version)s.tar.gz'] -checksums = ['40b534e0c81b853081c67ccde095367bd8a5eead2ee883431331674e7aa9509f'] - -builddependencies = [ - ('M4', '1.4.19'), -] -dependencies = [ - ('netCDF', '4.9.2'), - ('bzip2', '1.0.8'), -] - -# (too) parallel build fails, but single-core build is fairly quick anyway (~1min) -parallel = 1 - - -moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb deleted file mode 100644 index 2229ea87111..00000000000 --- a/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-gompi-2024a.eb +++ /dev/null @@ -1,54 +0,0 @@ -name = 'netCDF' -version = '4.9.2' - -homepage = 'https://www.unidata.ucar.edu/software/netcdf/' -description = """NetCDF (network Common Data Form) is a set of software libraries - and machine-independent data formats that support the creation, access, and sharing of array-oriented - scientific data.""" - -toolchain = {'name': 'gompi', 'version': '2024a'} -toolchainopts = {'pic': True, 'usempi': True} - -source_urls = ['https://github.com/Unidata/%(namelower)s-c/archive/'] -sources = ['v%(version)s.tar.gz'] -patches = ['%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch'] -checksums = [ - {'v4.9.2.tar.gz': 'bc104d101278c68b303359b3dc4192f81592ae8640f1aee486921138f7f88cb7'}, - {'%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch': - '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a'}, -] - -builddependencies = [ - ('Autotools', '20231222'), - ('CMake', '3.29.3'), - ('Doxygen', '1.11.0'), -] -dependencies = [ - ('HDF5', '1.14.5'), - ('cURL', '8.7.1'), - ('Szip', '2.1.1'), - ('zstd', '1.5.6'), - ('bzip2', '1.0.8'), - ('libxml2', '2.12.7'), -] - -# disable Szip, zlib parallel I/O tests, since these can hang on some systems, e.g. generoso -# see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834 -# and https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172 -preconfigopts = ("sed -i -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo \"skipped by EasyBuild\"|g'" - " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo \"skipped by EasyBuild\"|g'" - " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo \"skipped by EasyBuild\"|g'" - " %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&") - -# make sure both static and shared libs are built -# and disable "remote" tests that access a unreliable external test server over internet -configopts = [ - "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF", - "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON", -] - -# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests -pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 " -runtest = 'test' - -moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb b/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb deleted file mode 100644 index a7958767777..00000000000 --- a/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2-foss-2024a.eb +++ /dev/null @@ -1,54 +0,0 @@ -easyblock = 'PythonBundle' - -name = 'netcdf4-python' -version = '1.7.1.post2' - - -homepage = 'https://unidata.github.io/netcdf4-python/' -description = "Python/numpy interface to netCDF." - -toolchain = {'name': 'foss', 'version': '2024a'} -toolchainopts = {'usempi': True} - -dependencies = [ - ('Python', '3.12.3'), - ('SciPy-bundle', '2024.05'), - ('netCDF', '4.9.2'), - ('cURL', '8.7.1'), - ('mpi4py', '4.0.0'), -] - -fix_python_shebang_for = ['bin/*'] -sanity_pip_check = True -use_pip = True - -exts_list = [ - ('cftime', '1.6.4', { - 'checksums': ['e325406193758a7ed67308deb52e727782a19e384e183378e7ff62098be0aedc'], - }), - (name, version, { - 'patches': [ - 'netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch', - ], - 'source_tmpl': 'netcdf4-%(version)s.tar.gz', - 'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'], - 'checksums': [ - {'netcdf4-1.7.1.post2.tar.gz': '37d557e36654889d7020192bfb56f9d5f93894cb32997eb837ae586c538fd7b6'}, - {'netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch': - '7faa7e839ad1e816ffd0153e4b76b43ebce3e14d35f0534f812168dfaa78316c'}, - ], - }), -] - -sanity_check_paths = { - 'files': ['bin/nc3tonc4', 'bin/nc4tonc3', 'bin/ncinfo'], - 'dirs': ['lib/python%(pyshortver)s/site-packages'], -} - -sanity_check_commands = [ - "nc4tonc3 --help", - "nc3tonc4 --help", - "ncinfo --help", -] - -moduleclass = 'data' diff --git a/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch b/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch deleted file mode 100644 index be4deb77f96..00000000000 --- a/easybuild/easyconfigs/n/netcdf4-python/netcdf4-python-1.7.1.post2_relax_tolerance_compression_test.patch +++ /dev/null @@ -1,15 +0,0 @@ -# Relax tolerance in the compression_szip test to avoid fails on some systems. -# author: maxim-masterov (SURF) -# -diff -Nru netcdf4-1.7.1.post2.orig/test/test_compression_szip.py netcdf4-1.7.1.post2/test/test_compression_szip.py ---- netcdf4-1.7.1.post2.orig/test/test_compression_szip.py 2024-10-07 16:01:21.276893761 +0200 -+++ netcdf4-1.7.1.post2/test/test_compression_szip.py 2024-10-07 16:27:47.424436617 +0200 -@@ -35,7 +35,7 @@ - assert_almost_equal(datarr,f.variables['data'][:]) - assert f.variables['data'].filters() ==\ - {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False} -- assert_almost_equal(datarr,f.variables['data_szip'][:]) -+ assert_almost_equal(datarr,f.variables['data_szip'][:], 6) - dtest = {'zlib': False, 'szip': {'coding': 'ec', 'pixels_per_block': 32}, 'zstd': False, 'bzip2': False, 'blosc': False, 'shuffle': False, 'complevel': 0, 'fletcher32': False} - assert f.variables['data_szip'].filters() == dtest - f.close() diff --git a/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb b/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb deleted file mode 100644 index b586cfd0da4..00000000000 --- a/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-gompi-2024a.eb +++ /dev/null @@ -1,35 +0,0 @@ -easyblock = 'ConfigureMake' - -name = 'PnetCDF' -version = '1.13.0' - -homepage = 'https://parallel-netcdf.github.io/' -description = "Parallel netCDF: A Parallel I/O Library for NetCDF File Access" - -toolchain = {'name': 'gompi', 'version': '2024a'} - -source_urls = ['https://parallel-netcdf.github.io/Release'] -sources = [SOURCELOWER_TAR_GZ] -checksums = ['aba0f1c77a51990ba359d0f6388569ff77e530ee574e40592a1e206ed9b2c491'] - -builddependencies = [ - ('Autotools', '20231222'), - ('Perl', '5.38.2'), -] - -preconfigopts = "autoreconf -f -i && " -configopts = [ - '', - '--enable-shared', -] - -sanity_check_paths = { - 'files': ['bin/%s' % x for x in ['ncmpidiff', 'ncmpidump', 'ncmpigen', 'ncoffsets', - 'ncvalidator', 'pnetcdf-config', 'pnetcdf_version']] + - ['lib/lib%(namelower)s.a', 'lib/lib%%(namelower)s.%s' % SHLIB_EXT], - 'dirs': ['include'], -} - -modextrapaths = {'PNETCDF': ''} - -moduleclass = 'data' From f46f5c4b57a024e454f9aa8caa67fe8b53cd3146 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Fri, 18 Oct 2024 10:52:04 +0200 Subject: [PATCH 03/10] Add PETSc and deps --- .../h/Hypre/Hypre-2.31.0-foss-2024a.eb | 18 ++++++ .../m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb | 37 ++++++++++++ .../m/MUMPS/MUMPS-5.7.3_shared-mumps.patch | 57 +++++++++++++++++++ .../m/MUMPS/MUMPS-5.7.3_shared-pord.patch | 44 ++++++++++++++ .../p/PETSc/PETSc-3.22.0-foss-2024a.eb | 45 +++++++++++++++ .../p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb | 30 ++++++++++ .../s/SCOTCH/SCOTCH-7.0.5-gompi-2024a.eb | 26 +++++++++ ...uiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb | 31 ++++++++++ .../SuperLU_DIST-9.0.0-foss-2024a.eb | 44 ++++++++++++++ 9 files changed, 332 insertions(+) create mode 100644 easybuild/easyconfigs/h/Hypre/Hypre-2.31.0-foss-2024a.eb create mode 100644 easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb create mode 100644 easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch create mode 100644 easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-pord.patch create mode 100644 easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb create mode 100644 easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb create mode 100644 easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.5-gompi-2024a.eb create mode 100644 easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb create mode 100644 easybuild/easyconfigs/s/SuperLU_DIST/SuperLU_DIST-9.0.0-foss-2024a.eb diff --git a/easybuild/easyconfigs/h/Hypre/Hypre-2.31.0-foss-2024a.eb b/easybuild/easyconfigs/h/Hypre/Hypre-2.31.0-foss-2024a.eb new file mode 100644 index 00000000000..d2af95c1cc0 --- /dev/null +++ b/easybuild/easyconfigs/h/Hypre/Hypre-2.31.0-foss-2024a.eb @@ -0,0 +1,18 @@ +name = 'Hypre' +version = '2.31.0' + +homepage = 'https://computing.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods' +description = """Hypre is a library for solving large, sparse linear systems of equations on massively + parallel computers. The problems of interest arise in the simulation codes being developed at LLNL + and elsewhere to study physical phenomena in the defense, environmental, energy, and biological sciences.""" + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/hypre-space/hypre/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['9a7916e2ac6615399de5010eb39c604417bb3ea3109ac90e199c5c63b0cb4334'] + +start_dir = 'src' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb new file mode 100644 index 00000000000..4ded8422f0e --- /dev/null +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb @@ -0,0 +1,37 @@ +name = 'MUMPS' +version = '5.7.3' +versionsuffix = '-metis' + +homepage = 'https://graal.ens-lyon.fr/MUMPS/' +description = "A parallel sparse direct solver" + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'pic': True, 'usempi': True} + +#source_urls = ['https://graal.ens-lyon.fr/%(name)s/'] +source_urls = ['https://mumps-solver.org/'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + '%(name)s-%(version)s_shared-pord.patch', # builds the shared libs of PORD + '%(name)s-%(version)s_shared-%(namelower)s.patch', # builds shared libs of %(name)s +] + +checksums = [ + {'%(name)s_%(version)s.tar.gz': '84a47f7c4231b9efdf4d4f631a2cae2bdd9adeaabc088261d15af040143ed112'}, + {'%(name)s-%(version)s_shared-pord.patch': 'b9db8620f595ad4fec90f5b0fb275e267aa356d47fcfd5a04d10707970a861d8'}, + {'%(name)s-%(version)s_shared-mumps.patch': '2af9f61482799f923be41d42c3426a21cf1267d76299abae9d403a3e84bcf74f'}, +] + +dependencies = [ + ('SCOTCH', '7.0.5'), + ('METIS', '5.1.0'), +] + +# fix 'Type mismatch between actual argument' errors with GCC 10.x +prebuildopts = 'export FFLAGS="$FFLAGS -fallow-argument-mismatch" && ' +buildopts = 'all SONAME_VERSION="%(version)s"' + +parallel = 1 + + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch new file mode 100644 index 00000000000..891d5cb5c2c --- /dev/null +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch @@ -0,0 +1,57 @@ +diff -Nru MUMPS_5.7.3.orig/src/Makefile MUMPS_5.7.3/src/Makefile +--- MUMPS_5.7.3.orig/src/Makefile 2024-10-17 14:48:48.880200000 +0200 ++++ MUMPS_5.7.3/src/Makefile 2024-10-17 14:48:59.096063000 +0200 +@@ -15,18 +15,23 @@ + + libcommon: $(incdir)/mumps_int_def.h + $(MAKE) $(libdir)/libmumps_common$(PLAT)$(LIBEXT) ++ $(MAKE) $(libdir)/libmumps_common$(PLAT).so + + s: $(incdir)/mumps_int_def.h libcommon + $(MAKE) ARITH=s $(libdir)/libsmumps$(PLAT)$(LIBEXT) ++ $(MAKE) ARITH=s $(libdir)/libsmumps$(PLAT).so + + d: $(incdir)/mumps_int_def.h libcommon + $(MAKE) ARITH=d $(libdir)/libdmumps$(PLAT)$(LIBEXT) ++ $(MAKE) ARITH=d $(libdir)/libdmumps$(PLAT).so + + c: $(incdir)/mumps_int_def.h libcommon + $(MAKE) ARITH=c $(libdir)/libcmumps$(PLAT)$(LIBEXT) ++ $(MAKE) ARITH=c $(libdir)/libcmumps$(PLAT).so + + z: $(incdir)/mumps_int_def.h libcommon + $(MAKE) ARITH=z $(libdir)/libzmumps$(PLAT)$(LIBEXT) ++ $(MAKE) ARITH=z $(libdir)/libzmumps$(PLAT).so + + + # Rules for shared libraries +@@ -226,6 +231,13 @@ + $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT_SHARED): $(OBJS_MOD) $(OBJS_OTHER) $(libdir)/libmumps_common$(PLAT)$(LIBEXT_SHARED) + $(FC) $(OPTL) $(SHARED_OPT) $(OBJS_MOD) $(OBJS_OTHER) -L$(libdir) $(LORDERINGS) $(LIBS) $(LIBOTHERS) -lmumps_common$(PLAT) -o $@ $(RPATH_OPT) + ++$(libdir)/libmumps_common$(PLAT).so: $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER) ++ $(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-$(SONAME_VERSION).so $(OPTL) -L$(libdir) $(LORDERINGS) -lpthread $(MUMPS_LIBF77) $(MPIFLIB) $(MPICLIB) $(METISLIB) -o $(libdir)/libmumps_common$(PLAT)-$(SONAME_VERSION).so $(OPTL) -Wl,-z,defs ++ ln -fs libmumps_common$(PLAT)-$(SONAME_VERSION).so $@ ++ ++$(libdir)/lib$(ARITH)mumps$(PLAT).so: $(OBJS_MOD) $(OBJS_OTHER) ++ $(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-$(SONAME_VERSION).so $(OPTL) -L$(libdir) -lmumps_common$(PLAT) -lpthread $(MUMPS_LIBF77) $(LORDERINGS) $(MPIFLIB) $(METISLIB) $(SCALAP) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-$(SONAME_VERSION).so $(OPTL) -Wl,-z,defs ++ ln -fs lib$(ARITH)mumps$(PLAT)-$(SONAME_VERSION).so $@ + + # Dependencies between modules: + # i) arithmetic-dependent modules: +@@ -450,12 +462,14 @@ + .SUFFIXES: .c .F .o + .F.o: + $(FC) $(OPTF) $(FPIC) -I. -I../include $(INCS) $(IORDERINGSF) $(ORDERINGSF) -c $*.F $(OUTF)$*.o ++ $(FC) $(OPTF) -I. -I../include $(INCS) $(IORDERINGSF) $(ORDERINGSF) -fPIC -c $*.F $(OUTF)$*.o + .c.o: + $(CC) $(OPTC) $(FPIC) -I../include $(INCS) $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC)$*.o ++ $(CC) $(OPTC) -I../include $(INCS) $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -fPIC -c $*.c $(OUTC)$*.o + + $(ARITH)mumps_c.o: mumps_c.c + $(CC) $(OPTC) $(FPIC) -I../include $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \ +- $(IORDERINGSC) $(ORDERINGSC) -c mumps_c.c $(OUTC)$@ ++ $(IORDERINGSC) $(ORDERINGSC) -fPIC -c mumps_c.c $(OUTC)$@ + + clean: + $(RM) *.o *.mod $(incdir)/mumps_int_def.h diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-pord.patch b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-pord.patch new file mode 100644 index 00000000000..2662a44ebd1 --- /dev/null +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-pord.patch @@ -0,0 +1,44 @@ +Heavily inspired from https://src.fedoraproject.org/rpms/MUMPS//blob/rawhide/f/MUMPS-shared.patch +Author: micketeer@gmail.com +Updatd to version 5.5.0: J. Sassmannshausen/ICL (UK) +Updatd to version 5.5.1: maxim-masterov (SURF) +Updatd to version 5.6.1: Petr Král (INUITS) +Updatd to version 5.7.3: maxim-masterov (SURF) +diff -Nru MUMPS_5.7.3.orig/Makefile MUMPS_5.7.3/Makefile +--- MUMPS_5.7.3.orig/Makefile 2024-09-12 17:24:40.746942176 +0200 ++++ MUMPS_5.7.3/Makefile 2024-09-12 17:26:07.315608540 +0200 +@@ -65,7 +65,7 @@ + + include Makefile.inc + +-prerequisites: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT) ++prerequisites: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT) $(libdir)/libpord$(PLAT).so + + prerequisitesshared: Makefile.inc $(LIBSEQNEEDED)sharedlibseq $(libdir)/libpord$(PLAT)$(LIBEXT_SHARED) + +@@ -104,6 +104,11 @@ + fi; + + ++$(libdir)/libpord$(PLAT).so: ++ if [ "$(LPORDDIR)" != "" ] ; then \ ++ cd $(LPORDDIR); make CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" ARFUNCT= RANLIB="$(RANLIB)" libpord$(PLAT).so; fi; ++ if [ "$(LPORDDIR)" != "" ] ; then \ ++ cp -a $(LPORDDIR)/libpord*.so lib/; fi; + + + clean: +diff -Nru MUMPS_5.7.3.orig/PORD/lib/Makefile MUMPS_5.7.3/PORD/lib/Makefile +--- MUMPS_5.7.3.orig/PORD/lib/Makefile 2024-09-12 17:24:40.738348768 +0200 ++++ MUMPS_5.7.3/PORD/lib/Makefile 2024-09-12 17:27:09.929570114 +0200 +@@ -33,6 +33,10 @@ + libpord$(PLAT)$(LIBEXT_SHARED):$(OBJS) + $(CC) -shared $(OBJS) -o libpord$(PLAT)$(LIBEXT_SHARED) + ++libpord$(PLAT).so: $(OBJS) ++ $(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-$(SONAME_VERSION).so -o libpord$(PLAT)-$(SONAME_VERSION).so $(OPTL) -Wl,-z,defs ++ ln -fs libpord$(PLAT)-$(SONAME_VERSION).so $@ ++ + clean: + rm -f *.o + diff --git a/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb b/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb new file mode 100644 index 00000000000..4605209ac99 --- /dev/null +++ b/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb @@ -0,0 +1,45 @@ +## +# Author: Robert Mijakovic +# Author: Jasper Grimm (UoY) +## +name = 'PETSc' +version = '3.22.0' + +homepage = 'https://www.mcs.anl.gov/petsc' +description = """PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the + scalable (parallel) solution of scientific applications modeled by partial differential equations.""" + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'openmp': True, 'usempi': True, 'pic': True} + +source_urls = [ + 'https://web.cels.anl.gov/projects/petsc/download/release-snapshots', +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['2c03f7c0f7ad2649240d4989355cf7fb7f211b75156cd7d424e1d9dd7dfb290b'] + +builddependencies = [('CMake', '3.29.3')] + +dependencies = [ + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('Boost', '1.85.0'), + ('METIS', '5.1.0'), + ('SCOTCH', '7.0.5'), + ('MUMPS', '5.7.3', '-metis'), + ('SuiteSparse', '7.8.2'), + ('Hypre', '2.31.0'), + ('ParMETIS', '4.0.3'), + ('SuperLU_DIST', '9.0.0'), + ('mpi4py', '4.0.0'), +] + +configopts = '--LIBS="$LIBS -lrt" --with-mpi4py=0 ' + +shared_libs = 1 + +# only required when building PETSc in a SLURM job environment +# configopts += '--with-batch=1 --known-mpi-shared-libraries=1 --known-64-bit-blas-indices=0 ' +# prebuildopts = "srun ./conftest-arch-linux2-c-opt && ./reconfigure-arch-linux2-c-opt.py && " + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb b/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb new file mode 100644 index 00000000000..fb32c50c344 --- /dev/null +++ b/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb @@ -0,0 +1,30 @@ +## +# Author: Robert Mijakovic +## +name = 'ParMETIS' +version = '4.0.3' + +homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview' +description = """ParMETIS is an MPI-based parallel library that implements a variety of algorithms for partitioning + unstructured graphs, meshes, and for computing fill-reducing orderings of sparse matrices. ParMETIS extends the + functionality provided by METIS and includes routines that are especially suited for parallel AMR computations and + large scale numerical simulations. The algorithms implemented in ParMETIS are based on the parallel multilevel k-way + graph-partitioning, adaptive repartitioning, and parallel multi-constrained partitioning schemes.""" + +toolchain = {'name': 'gompi', 'version': '2024a'} +toolchainopts = {'usempi': True, 'pic': True} + +source_urls = [ + 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis', + 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/OLD', + 'https://www.cp2k.org/static/downloads', +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['f2d9a231b7cf97f1fee6e8c9663113ebf6c240d407d3c118c55b3633d6be6e5f'] + +builddependencies = [('CMake', '3.29.3')] + +# Build static and shared libraries +configopts = ['', '-DSHARED=1'] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.5-gompi-2024a.eb b/easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.5-gompi-2024a.eb new file mode 100644 index 00000000000..15b56a437d4 --- /dev/null +++ b/easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.5-gompi-2024a.eb @@ -0,0 +1,26 @@ +name = 'SCOTCH' +version = '7.0.5' + +homepage = 'https://www.labri.fr/perso/pelegrin/scotch/' +description = """Software package and libraries for sequential and parallel graph partitioning, +static mapping, and sparse matrix block ordering, and sequential mesh and hypergraph partitioning.""" + +toolchain = {'name': 'gompi', 'version': '2024a'} +toolchainopts = {'pic': True} + +source_urls = ['https://gitlab.inria.fr/scotch/scotch/-/archive/v%(version)s/'] +sources = ['%(namelower)s-v%(version)s.tar.gz'] +checksums = ['385507a9712bb9057497b9ac3f24ad2132bd3f3f8c7a62e78324fc58f2a0079b'] + +threadedmpi = False + +builddependencies = [ + ('Bison', '3.8.2'), + ('flex', '2.6.4'), +] + +dependencies = [ + ('zlib', '1.3.1'), +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb new file mode 100644 index 00000000000..acb434f280a --- /dev/null +++ b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb @@ -0,0 +1,31 @@ +name = 'SuiteSparse' +version = '7.1.0' +local_metis_ver = '5.1.0' +versionsuffix = '-METIS-%s' % local_metis_ver + +homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html' +description = """SuiteSparse is a collection of libraries to manipulate sparse matrices.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'unroll': True, 'pic': True} + +source_urls = ['https://github.com/DrTimothyAldenDavis/SuiteSparse/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['4cd3d161f9aa4f98ec5fa725ee5dc27bca960a3714a707a7d12b3d0abb504679'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('M4', '1.4.19'), +] + +dependencies = [ + ('METIS', local_metis_ver), + ('MPFR', '4.2.0'), +] + +# make sure that bin/demo can find libsuitesparseconfig.so.5 during build +prebuildopts = "export LD_LIBRARY_PATH=%(builddir)s/SuiteSparse-%(version)s/lib:$LD_LIBRARY_PATH && " +# # remove broken symlink +# prebuildopts += "rm GraphBLAS/CUDA/test/graphblascuda_test && " + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/s/SuperLU_DIST/SuperLU_DIST-9.0.0-foss-2024a.eb b/easybuild/easyconfigs/s/SuperLU_DIST/SuperLU_DIST-9.0.0-foss-2024a.eb new file mode 100644 index 00000000000..47c2a84b2f5 --- /dev/null +++ b/easybuild/easyconfigs/s/SuperLU_DIST/SuperLU_DIST-9.0.0-foss-2024a.eb @@ -0,0 +1,44 @@ +easyblock = "EB_SuperLU" + +name = 'SuperLU_DIST' +version = '9.0.0' + +homepage = 'https://crd-legacy.lbl.gov/~xiaoye/SuperLU/' +description = """SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems + of linear equations on high performance machines.""" + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'pic': True, 'openmp': True} + +github_account = 'xiaoyeli' +source_urls = [GITHUB_LOWER_SOURCE] +sources = ["v%(version)s.tar.gz"] +checksums = ['aa43d33d4b1b0f5f7b5ad7685e9a6bc25088832c6c74d2ab8f75a2c9f4e9e955'] + +builddependencies = [('CMake', '3.29.3')] + +dependencies = [ + ('ParMETIS', '4.0.3'), +] + +configopts = '-DTPL_PARMETIS_INCLUDE_DIRS="${EBROOTPARMETIS}/include" ' +configopts += '-DTPL_PARMETIS_LIBRARIES="${EBROOTPARMETIS}/lib/libparmetis.a;${EBROOTPARMETIS}/lib/libmetis.a" ' + +# Some tests run longer than default 1500s timeout on fairly big machine (36 cores). +# Include only first four tests, which should be fairly small to run +pretestopts = 'export ARGS="$ARGS --tests-regex pdtest_[21]x1_[13]_2_8_20_SP" && ' + +# remove broken symlink to libsuperlu.a +postinstallcmds = [ + "if [ -f %(installdir)s/lib64/libsuperlu.a ]; then rm %(installdir)s/lib64/libsuperlu.a; fi", + # This second one can be removed when https://github.com/easybuilders/easybuild-framework/pull/4435 is merged + # (i.e. in EasyBuild 5.0) + "if [ -f %(installdir)s/lib/libsuperlu.a ]; then rm %(installdir)s/lib/libsuperlu.a; fi" +] + +sanity_check_paths = { + 'files': ['lib64/libsuperlu_dist.a'], + 'dirs': ['include'] +} + +moduleclass = 'numlib' From 78c29391eca29e53ce221f7b2e879bd26460a513 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Fri, 18 Oct 2024 11:02:58 +0200 Subject: [PATCH 04/10] Add SuiteSparse without METIS --- ...uiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb | 30 +++++++++++++++++++ .../SuiteSparse-7.8.2-foss-2024a.eb | 26 ++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb create mode 100644 easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a.eb diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb new file mode 100644 index 00000000000..e11f74b2ee8 --- /dev/null +++ b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb @@ -0,0 +1,30 @@ +name = 'SuiteSparse' +version = '7.8.2' +local_metis_ver = '5.1.0' +versionsuffix = '-METIS-%s' % local_metis_ver + +homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html' +description = "SuiteSparse is a collection of libraries to manipulate sparse matrices." + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'unroll': True, 'pic': True} + +source_urls = ['https://github.com/DrTimothyAldenDavis/%(name)s/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['996c48c87baaeb5fc04bd85c7e66d3651a56fe749c531c60926d75b4db5d2181'] + +builddependencies = [ + ('CMake', '3.29.3'), + ('M4', '1.4.19'), +] + +dependencies = [ + ('METIS', local_metis_ver), + ('MPFR', '4.2.1'), +] + +# make sure that bin/demo can find libsuitesparseconfig.so.5 during build +prebuildopts = "export LD_LIBRARY_PATH=%(builddir)s/%(name)s-%(version)s/lib:$LD_LIBRARY_PATH && " + + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a.eb new file mode 100644 index 00000000000..13a76332e2c --- /dev/null +++ b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a.eb @@ -0,0 +1,26 @@ +name = 'SuiteSparse' +version = '7.8.2' + +homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html' +description = "SuiteSparse is a collection of libraries to manipulate sparse matrices." + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'unroll': True, 'pic': True} + +source_urls = ['https://github.com/DrTimothyAldenDavis/%(name)s/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['996c48c87baaeb5fc04bd85c7e66d3651a56fe749c531c60926d75b4db5d2181'] + +builddependencies = [ + ('CMake', '3.29.3'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('MPFR', '4.2.1'), +] + +# uncomment the next row if need customization +# cmake_options = '' + +moduleclass = 'numlib' From 291669af3e392af3003556d313a83b482a7b320c Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Fri, 18 Oct 2024 11:04:01 +0200 Subject: [PATCH 05/10] Remove redundant easyconfig --- ...uiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb deleted file mode 100644 index acb434f280a..00000000000 --- a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.1.0-foss-2023a-METIS-5.1.0.eb +++ /dev/null @@ -1,31 +0,0 @@ -name = 'SuiteSparse' -version = '7.1.0' -local_metis_ver = '5.1.0' -versionsuffix = '-METIS-%s' % local_metis_ver - -homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html' -description = """SuiteSparse is a collection of libraries to manipulate sparse matrices.""" - -toolchain = {'name': 'foss', 'version': '2023a'} -toolchainopts = {'unroll': True, 'pic': True} - -source_urls = ['https://github.com/DrTimothyAldenDavis/SuiteSparse/archive'] -sources = ['v%(version)s.tar.gz'] -checksums = ['4cd3d161f9aa4f98ec5fa725ee5dc27bca960a3714a707a7d12b3d0abb504679'] - -builddependencies = [ - ('CMake', '3.26.3'), - ('M4', '1.4.19'), -] - -dependencies = [ - ('METIS', local_metis_ver), - ('MPFR', '4.2.0'), -] - -# make sure that bin/demo can find libsuitesparseconfig.so.5 during build -prebuildopts = "export LD_LIBRARY_PATH=%(builddir)s/SuiteSparse-%(version)s/lib:$LD_LIBRARY_PATH && " -# # remove broken symlink -# prebuildopts += "rm GraphBLAS/CUDA/test/graphblascuda_test && " - -moduleclass = 'numlib' From 521e72907e8d8fefa9bdf0bf0e0ed66b09495b76 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Fri, 18 Oct 2024 11:05:50 +0200 Subject: [PATCH 06/10] Change home page for ParMETIS --- easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb b/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb index fb32c50c344..a39fe73cb43 100644 --- a/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb +++ b/easybuild/easyconfigs/p/ParMETIS/ParMETIS-4.0.3-gompi-2024a.eb @@ -4,7 +4,7 @@ name = 'ParMETIS' version = '4.0.3' -homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview' +homepage = 'https://github.com/KarypisLab/ParMETIS' description = """ParMETIS is an MPI-based parallel library that implements a variety of algorithms for partitioning unstructured graphs, meshes, and for computing fill-reducing orderings of sparse matrices. ParMETIS extends the functionality provided by METIS and includes routines that are especially suited for parallel AMR computations and From a1d5d2cc4e7162d1b2ec588a897bb9e36d9fd250 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Fri, 18 Oct 2024 11:57:07 +0200 Subject: [PATCH 07/10] Add comments to the MUMPS patch --- .../easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch index 891d5cb5c2c..ff8bb180ded 100644 --- a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3_shared-mumps.patch @@ -1,3 +1,9 @@ +Heavily inspired from https://src.fedoraproject.org/rpms/MUMPS//blob/rawhide/f/MUMPS-shared.patch +Author: micketeer@gmail.com +Updatd to version 5.5.0: J. Sassmannshausen/ICL (UK) +Updatd to version 5.5.1: maxim-masterov (SURF) +Updatd to version 5.6.1: Petr Král (INUITS) +Updatd to version 5.7.3: maxim-masterov (SURF) diff -Nru MUMPS_5.7.3.orig/src/Makefile MUMPS_5.7.3/src/Makefile --- MUMPS_5.7.3.orig/src/Makefile 2024-10-17 14:48:48.880200000 +0200 +++ MUMPS_5.7.3/src/Makefile 2024-10-17 14:48:59.096063000 +0200 From d39143bad51c6f2de64bc1aa02db56fd9a56f89b Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Fri, 18 Oct 2024 11:58:12 +0200 Subject: [PATCH 08/10] Remove redundant comment --- easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb | 1 - 1 file changed, 1 deletion(-) diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb index 4ded8422f0e..f68ba72bc4f 100644 --- a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.7.3-foss-2024a-metis.eb @@ -8,7 +8,6 @@ description = "A parallel sparse direct solver" toolchain = {'name': 'foss', 'version': '2024a'} toolchainopts = {'pic': True, 'usempi': True} -#source_urls = ['https://graal.ens-lyon.fr/%(name)s/'] source_urls = ['https://mumps-solver.org/'] sources = ['%(name)s_%(version)s.tar.gz'] patches = [ From e872288140e6407a5a5ba69ae6eafc1f26f8e723 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Mon, 21 Oct 2024 14:19:38 +0200 Subject: [PATCH 09/10] Update mpi4py --- easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb b/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb index 4605209ac99..fe03c76c472 100644 --- a/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb +++ b/easybuild/easyconfigs/p/PETSc/PETSc-3.22.0-foss-2024a.eb @@ -31,7 +31,7 @@ dependencies = [ ('Hypre', '2.31.0'), ('ParMETIS', '4.0.3'), ('SuperLU_DIST', '9.0.0'), - ('mpi4py', '4.0.0'), + ('mpi4py', '4.0.1'), ] configopts = '--LIBS="$LIBS -lrt" --with-mpi4py=0 ' From 3202b033855d430b02ab1d2aee3e5658537fb9fe Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 25 Oct 2024 13:16:19 +0200 Subject: [PATCH 10/10] Delete easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb --- ...uiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb deleted file mode 100644 index e11f74b2ee8..00000000000 --- a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb +++ /dev/null @@ -1,30 +0,0 @@ -name = 'SuiteSparse' -version = '7.8.2' -local_metis_ver = '5.1.0' -versionsuffix = '-METIS-%s' % local_metis_ver - -homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html' -description = "SuiteSparse is a collection of libraries to manipulate sparse matrices." - -toolchain = {'name': 'foss', 'version': '2024a'} -toolchainopts = {'unroll': True, 'pic': True} - -source_urls = ['https://github.com/DrTimothyAldenDavis/%(name)s/archive'] -sources = ['v%(version)s.tar.gz'] -checksums = ['996c48c87baaeb5fc04bd85c7e66d3651a56fe749c531c60926d75b4db5d2181'] - -builddependencies = [ - ('CMake', '3.29.3'), - ('M4', '1.4.19'), -] - -dependencies = [ - ('METIS', local_metis_ver), - ('MPFR', '4.2.1'), -] - -# make sure that bin/demo can find libsuitesparseconfig.so.5 during build -prebuildopts = "export LD_LIBRARY_PATH=%(builddir)s/%(name)s-%(version)s/lib:$LD_LIBRARY_PATH && " - - -moduleclass = 'numlib'