From 51dfe4c98f2b67d70e6575e3b90595a648b7489a Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Tue, 22 Oct 2024 23:02:41 +0200 Subject: [PATCH 1/5] Add CP2k and deps --- .../Libint-2.9.0-GCC-13.3.0-lmax-6-cp2k.eb | 50 +++++++++++++++++++ .../Libint/Libint-2.9.0_remove-test-eri.patch | 16 ++++++ .../libvori/libvori-220621-GCCcore-13.3.0.eb | 28 +++++++++++ .../l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb | 32 ++++++++++++ 4 files changed, 126 insertions(+) create mode 100644 easybuild/easyconfigs/l/Libint/Libint-2.9.0-GCC-13.3.0-lmax-6-cp2k.eb create mode 100644 easybuild/easyconfigs/l/Libint/Libint-2.9.0_remove-test-eri.patch create mode 100644 easybuild/easyconfigs/l/libvori/libvori-220621-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb diff --git a/easybuild/easyconfigs/l/Libint/Libint-2.9.0-GCC-13.3.0-lmax-6-cp2k.eb b/easybuild/easyconfigs/l/Libint/Libint-2.9.0-GCC-13.3.0-lmax-6-cp2k.eb new file mode 100644 index 000000000000..1f33e511ec0e --- /dev/null +++ b/easybuild/easyconfigs/l/Libint/Libint-2.9.0-GCC-13.3.0-lmax-6-cp2k.eb @@ -0,0 +1,50 @@ +# # +# This easyconfig is based on the easy config written originally by Robert Mijakovic +# Author: Ben Czaja (SURF) +# # +name = 'Libint' +version = '2.9.0' +local_lmax = 6 +# custom configuration, to be used as dependency for CP2K +versionsuffix = '-lmax-%s-cp2k' % local_lmax + +homepage = 'https://github.com/evaleev/libint' +description = """Libint library is used to evaluate the traditional (electron repulsion) and certain novel two-body + matrix elements (integrals) over Cartesian Gaussian functions used in modern atomic and molecular theory.""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} +toolchainopts = {'pic': True, 'cstd': 'c++11'} + +source_urls = ['https://github.com/evaleev/%(namelower)s/archive'] +sources = ['v%(version)s.tar.gz'] +patches = [ + 'Libint-2.9.0_remove-test-eri.patch', +] +checksums = [ + {'v2.9.0.tar.gz': '4929b2f2d3e53479270be052e366e8c70fa154a7f309e5c2c23b7d394159687d'}, + {'Libint-2.9.0_remove-test-eri.patch': '9d18dbf23818dc4150c80bbcc1510f5c98da19a661bed60c5e46a2384319ceb7'}, +] + +builddependencies = [ + ('Autotools', '20231222'), + ('GMP', '6.3.0'), + ('Boost', '1.85.0'), + ('Eigen', '3.4.0'), + ('Python', '3.12.3'), + ('CMake', '3.29.3'), +] + +# configure options as required by CP2K, +# see Jenkinsfile in https://github.com/cp2k/libint-cp2k +local_eri_max_am = '%s,%s' % (local_lmax, local_lmax - 1) +local_eri23_max_am = '%s,%s' % (local_lmax + 2, local_lmax + 1) + +libint_compiler_configopts = '--enable-eri=1 --enable-eri2=1 --enable-eri3=1 --with-max-am=%s ' % local_lmax +libint_compiler_configopts += '--with-eri-max-am=%s ' % local_eri_max_am +libint_compiler_configopts += '--with-eri2-max-am=%s ' % local_eri23_max_am +libint_compiler_configopts += '--with-eri3-max-am=%s ' % local_eri23_max_am +libint_compiler_configopts += '--enable-generic-code --disable-unrolling' + +with_fortran = True + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/l/Libint/Libint-2.9.0_remove-test-eri.patch b/easybuild/easyconfigs/l/Libint/Libint-2.9.0_remove-test-eri.patch new file mode 100644 index 000000000000..e6f7effe2d3f --- /dev/null +++ b/easybuild/easyconfigs/l/Libint/Libint-2.9.0_remove-test-eri.patch @@ -0,0 +1,16 @@ +# Disable Fortran ERI tests as those have very strict error tolerances. This patch is updated from Libint-2.6.0_remove-test-eri.patch +# See https://github.com/evaleev/libint/issues/188 +# Author: Ben Czaja (SURF) based on orginal patch from Alex Domingo (Vrije Universiteit Brussel) +# Updated for v2.9.0 by maxim-masterov (SURF) +diff -Nru libint-2.9.0.orig/export/cmake/CMakeLists.txt.export libint-2.9.0/export/cmake/CMakeLists.txt.export +--- libint-2.9.0.orig/export/cmake/CMakeLists.txt.export 2024-10-15 15:36:02.806588000 +0200 ++++ libint-2.9.0/export/cmake/CMakeLists.txt.export 2024-10-15 15:37:37.562090555 +0200 +@@ -568,7 +568,7 @@ + PROPERTIES FIXTURES_REQUIRED LIBINT2_FORTRAN_EXAMPLE_EXEC) + + if (LIBINT_HAS_CXX_API) +- add_executable(fortran_test-libint2 EXCLUDE_FROM_ALL fortran/test.cc fortran/test-eri.cc $) ++ add_executable(fortran_test-libint2 EXCLUDE_FROM_ALL fortran/test.cc $) + target_link_libraries(fortran_test-libint2 libint2_cxx libint_f) + target_include_directories(fortran_test-libint2 PRIVATE $) + add_test(libint2/fortran_test/build "${CMAKE_COMMAND}" --build ${PROJECT_BINARY_DIR} --target fortran_test-libint2) diff --git a/easybuild/easyconfigs/l/libvori/libvori-220621-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libvori/libvori-220621-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..58351c1b0cce --- /dev/null +++ b/easybuild/easyconfigs/l/libvori/libvori-220621-GCCcore-13.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'CMakeMake' + +name = 'libvori' +version = '220621' + +homepage = 'https://brehm-research.de/libvori.php' +description = """C++ library implementing the Voronoi integration as well as the compressed bqb +file format. The present version of libvori is a very early development +version, which is hard-coded to work with the CP2k program package.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://brehm-research.de/files/'] +sources = [SOURCE_TAR_GZ] +checksums = ['1cfa98c564814bddacf1c0e7f11582137d758668f6307e6eb392c72317984c14'] + +builddependencies = [ + ('CMake', '3.29.3'), + ('binutils', '2.42'), +] + + +sanity_check_paths = { + 'files': ['lib/%(name)s.a'], + 'dirs': ['lib'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb b/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb new file mode 100644 index 000000000000..26fd07347b79 --- /dev/null +++ b/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'libxsmm' +version = '1.17' + +homepage = 'https://github.com/hfp/libxsmm' +description = """LIBXSMM is a library for small dense and small sparse matrix-matrix multiplications +targeting Intel Architecture (x86).""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} + +source_urls = ['https://github.com/hfp/%(name)s/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['8b642127880e92e8a75400125307724635ecdf4020ca4481e5efe7640451bb92'] + +# install both static and dynamic version +installopts = [ + 'PREFIX=%(installdir)s', + "PREFIX=%(installdir)s STATIC=0", +] + +maxparallel = 1 + +skipsteps = ['configure'] + +sanity_check_paths = { + 'files': ['bin/libxsmm_gemm_generator', 'include/%(name)s.h', + 'lib/%(name)s.a', 'lib/%(name)s.%s' % SHLIB_EXT], + 'dirs': ['share'], +} + +moduleclass = 'math' From 7db4dd038ec7af4d53d711a43cbbbc695429a125 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Tue, 22 Oct 2024 23:24:10 +0200 Subject: [PATCH 2/5] Minor changes --- .../l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb b/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb index 26fd07347b79..8e20d3f1a7ec 100644 --- a/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb +++ b/easybuild/easyconfigs/l/libxsmm/libxsmm-1.17-GCC-13.3.0.eb @@ -14,19 +14,14 @@ sources = ['%(version)s.tar.gz'] checksums = ['8b642127880e92e8a75400125307724635ecdf4020ca4481e5efe7640451bb92'] # install both static and dynamic version -installopts = [ - 'PREFIX=%(installdir)s', - "PREFIX=%(installdir)s STATIC=0", -] - -maxparallel = 1 +installopts = ['PREFIX=%(installdir)s', 'PREFIX=%(installdir)s STATIC=0'] skipsteps = ['configure'] +maxparallel = 1 sanity_check_paths = { - 'files': ['bin/libxsmm_gemm_generator', 'include/%(name)s.h', - 'lib/%(name)s.a', 'lib/%(name)s.%s' % SHLIB_EXT], - 'dirs': ['share'], + 'files': ['bin/libxsmm_gemm_generator', 'include/libxsmm.h', 'lib/libxsmm.a', 'lib/libxsmm.%s' % SHLIB_EXT], + 'dirs': ['share'] } moduleclass = 'math' From 8b90a853ce44ba93a5bcd7c2da929489f846965f Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Tue, 22 Oct 2024 23:33:28 +0200 Subject: [PATCH 3/5] Add CP2K --- .../c/CP2K/CP2K-2024.3-foss-2024a.eb | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb diff --git a/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb b/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb new file mode 100644 index 000000000000..ace41ec2490b --- /dev/null +++ b/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb @@ -0,0 +1,43 @@ +name = 'CP2K' +version = '2024.3' + +homepage = 'https://www.cp2k.org/' +description = """CP2K is a freely available (GPL) program, written in Fortran 95, to perform atomistic and molecular + simulations of solid state, liquid, molecular and biological systems. It provides a general framework for different + methods such as e.g. density functional theory (DFT) using a mixed Gaussian and plane waves approach (GPW), and + classical pair and many-body potentials. """ + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'pic': True, 'openmp': True} + +source_urls = ['https://github.com/cp2k/cp2k/releases/download/v%(version)s/'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['a6eeee773b6b1fb417def576e4049a89a08a0ed5feffcd7f0b33c7d7b48f19ba'] + +builddependencies = [ + ('flex', '2.6.4'), + ('Bison', '3.8.2'), +] + +dependencies = [ + ('Libint', '2.9.0', '-lmax-6-cp2k'), + ('libxc', '6.2.2'), + ('libvori', '220621'), + ('FFTW', '3.3.10'), + ('PLUMED', '2.9.2'), +] + +if ARCH == 'x86_64': + # LIBXSMM is not supported supported on ARM with GCC 12.2.0 and 12.3.0 + # see https://www.cp2k.org/dev:compiler_support + dependencies += [ + ('libxsmm', '1.17'), + ] + +type = 'psmp' + +# regression test reports handful of failures, +# we're assuming those are OK to ignore... +ignore_regtest_fails = True + +moduleclass = 'chem' From ee778da517f575ce525737a88cd5c94ac4c8790f Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Wed, 23 Oct 2024 01:00:12 +0200 Subject: [PATCH 4/5] Add PLUMED and xxd --- .../p/PLUMED/PLUMED-2.9.2-foss-2024a.eb | 55 +++++++++++++++++++ .../x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb | 34 ++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb create mode 100644 easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb diff --git a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb new file mode 100644 index 000000000000..e72a0ce5b771 --- /dev/null +++ b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb @@ -0,0 +1,55 @@ +easyblock = 'ConfigureMake' + +name = 'PLUMED' +version = '2.9.2' + +homepage = 'https://www.plumed.org' +description = """PLUMED is an open source library for free energy calculations in molecular systems which + works together with some of the most popular molecular dynamics engines. Free energy calculations can be + performed as a function of many order parameters with a particular focus on biological problems, using + state of the art methods such as metadynamics, umbrella sampling and Jarzynski-equation based steered MD. + The software, written in C++, can be easily interfaced with both fortran and C/C++ codes. +""" + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'usempi': 'True'} + +source_urls = ['https://github.com/plumed/plumed2/releases/download/v%(version)s/'] +sources = [SOURCE_TGZ] +checksums = ['6fc23fe31074ad6b7a0eb9e2441fce5b3d92514d0d87206594c59c75e4c83d6e'] + +builddependencies = [ + ('xxd', '9.1.0785'), + ('Cython', '3.0.10'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('GSL', '2.8'), + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('Boost', '1.85.0'), +] + +preconfigopts = 'env FC=$MPIF90 LIBS="$LIBLAPACK $LIBS" ' +configopts = '--exec-prefix=%(installdir)s --enable-gsl --enable-modules=all --enable-python ' +configopts += '--enable-boost_graph --enable-boost_serialization ' +prebuildopts = 'source sourceme.sh && ' + +# install path for PLUMED libraries must be included in $LD_LIBRARY_PATH when Python bindings get built/installed +preinstallopts = 'LD_LIBRARY_PATH="%(installdir)s/lib:$LD_LIBRARY_PATH" ' + +sanity_check_paths = { + 'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ["python -c 'import plumed'"] + +modextrapaths = { + 'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT, + 'PLUMED_ROOT': 'lib/plumed', + 'PYTHONPATH': 'lib/plumed/python', +} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb b/easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..79e525179cd3 --- /dev/null +++ b/easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb @@ -0,0 +1,34 @@ +# Last contribution from the NIHR Biomedical Research Centre +# Guy's and St Thomas' NHS Foundation Trust and King's College London +# uploaded by J. Sassmannshausen + +easyblock = 'MakeCp' + +name = 'xxd' +version = '9.1.0785' + +homepage = 'https://www.vim.org' +description = """xxd is part of the VIM package and this will only install xxd, not vim! +xxd converts to/from hexdumps of binary files.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/vim/vim/archive/refs/tags'] +sources = ['v%(version)s.tar.gz'] +checksums = ['706214dd76c4b27f56b5332f43c5ed6d145d46307d0da4a8e161830c9c7be714'] + +builddependencies = [ + ('binutils', '2.42'), +] + +start_dir = 'src/%(name)s' +files_to_copy = [(['%(name)s'], 'bin')] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': [], +} + +sanity_check_commands = ["%(name)s -h 2>&1 | grep -A 4 '^Usage:'"] + +moduleclass = 'tools' From 9e1b1bc9460e7415458c55e54d9f78d717202657 Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Thu, 14 Aug 2025 15:29:25 +0200 Subject: [PATCH 5/5] Remove PLUMED v2.9.2 and xxd v9.1.0785, updated CP2K v2024.3 --- .../c/CP2K/CP2K-2024.3-foss-2024a.eb | 2 +- .../p/PLUMED/PLUMED-2.9.2-foss-2024a.eb | 55 ------------------- .../x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb | 34 ------------ 3 files changed, 1 insertion(+), 90 deletions(-) delete mode 100644 easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb delete mode 100644 easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb diff --git a/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb b/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb index ace41ec2490b..1c29d5a28c39 100644 --- a/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb +++ b/easybuild/easyconfigs/c/CP2K/CP2K-2024.3-foss-2024a.eb @@ -24,7 +24,7 @@ dependencies = [ ('libxc', '6.2.2'), ('libvori', '220621'), ('FFTW', '3.3.10'), - ('PLUMED', '2.9.2'), + ('PLUMED', '2.9.3'), ] if ARCH == 'x86_64': diff --git a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb deleted file mode 100644 index e72a0ce5b771..000000000000 --- a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-foss-2024a.eb +++ /dev/null @@ -1,55 +0,0 @@ -easyblock = 'ConfigureMake' - -name = 'PLUMED' -version = '2.9.2' - -homepage = 'https://www.plumed.org' -description = """PLUMED is an open source library for free energy calculations in molecular systems which - works together with some of the most popular molecular dynamics engines. Free energy calculations can be - performed as a function of many order parameters with a particular focus on biological problems, using - state of the art methods such as metadynamics, umbrella sampling and Jarzynski-equation based steered MD. - The software, written in C++, can be easily interfaced with both fortran and C/C++ codes. -""" - -toolchain = {'name': 'foss', 'version': '2024a'} -toolchainopts = {'usempi': 'True'} - -source_urls = ['https://github.com/plumed/plumed2/releases/download/v%(version)s/'] -sources = [SOURCE_TGZ] -checksums = ['6fc23fe31074ad6b7a0eb9e2441fce5b3d92514d0d87206594c59c75e4c83d6e'] - -builddependencies = [ - ('xxd', '9.1.0785'), - ('Cython', '3.0.10'), -] - -dependencies = [ - ('zlib', '1.3.1'), - ('GSL', '2.8'), - ('Python', '3.12.3'), - ('SciPy-bundle', '2024.05'), - ('Boost', '1.85.0'), -] - -preconfigopts = 'env FC=$MPIF90 LIBS="$LIBLAPACK $LIBS" ' -configopts = '--exec-prefix=%(installdir)s --enable-gsl --enable-modules=all --enable-python ' -configopts += '--enable-boost_graph --enable-boost_serialization ' -prebuildopts = 'source sourceme.sh && ' - -# install path for PLUMED libraries must be included in $LD_LIBRARY_PATH when Python bindings get built/installed -preinstallopts = 'LD_LIBRARY_PATH="%(installdir)s/lib:$LD_LIBRARY_PATH" ' - -sanity_check_paths = { - 'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT], - 'dirs': [], -} - -sanity_check_commands = ["python -c 'import plumed'"] - -modextrapaths = { - 'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT, - 'PLUMED_ROOT': 'lib/plumed', - 'PYTHONPATH': 'lib/plumed/python', -} - -moduleclass = 'chem' diff --git a/easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb b/easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb deleted file mode 100644 index 79e525179cd3..000000000000 --- a/easybuild/easyconfigs/x/xxd/xxd-9.1.0785-GCCcore-13.3.0.eb +++ /dev/null @@ -1,34 +0,0 @@ -# Last contribution from the NIHR Biomedical Research Centre -# Guy's and St Thomas' NHS Foundation Trust and King's College London -# uploaded by J. Sassmannshausen - -easyblock = 'MakeCp' - -name = 'xxd' -version = '9.1.0785' - -homepage = 'https://www.vim.org' -description = """xxd is part of the VIM package and this will only install xxd, not vim! -xxd converts to/from hexdumps of binary files.""" - -toolchain = {'name': 'GCCcore', 'version': '13.3.0'} - -source_urls = ['https://github.com/vim/vim/archive/refs/tags'] -sources = ['v%(version)s.tar.gz'] -checksums = ['706214dd76c4b27f56b5332f43c5ed6d145d46307d0da4a8e161830c9c7be714'] - -builddependencies = [ - ('binutils', '2.42'), -] - -start_dir = 'src/%(name)s' -files_to_copy = [(['%(name)s'], 'bin')] - -sanity_check_paths = { - 'files': ['bin/%(name)s'], - 'dirs': [], -} - -sanity_check_commands = ["%(name)s -h 2>&1 | grep -A 4 '^Usage:'"] - -moduleclass = 'tools'