Skip to content
34 changes: 34 additions & 0 deletions easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name = 'HDF5'
# Note: Odd minor releases are only RCs and should not be used.
version = '1.14.3'

homepage = 'https://portal.hdfgroup.org/display/support'
description = """HDF5 is a data model, library, and file format for storing and managing data.
It supports an unlimited variety of datatypes, and is designed for flexible
and efficient I/O and for high volume and complex data."""

toolchain = {'name': 'iompi', 'version': '2023b'}
toolchainopts = {'pic': True, 'usempi': True}

source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src']
sources = [SOURCELOWER_TAR_GZ]
patches = ['HDF5-1.14.3_suppress_fp_exceptions.patch']
checksums = [
{'hdf5-1.14.3.tar.gz': (
# Folder name changed from hdf5-1.14.3 to hdfsrc and Makefile got deleted
'09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7',
'126b800e9b87f65e7e7ffa58ee006607bab03a8e11e5209ea3d5c0c331321d43',
)},
{'HDF5-1.14.3_suppress_fp_exceptions.patch': 'bf33e579c93a16043c54b266321bbe95e4a8797f7fe6d096a13ce905ed2ffde7'},
]

# replace src include path with installation dir for $H5BLD_CPPFLAGS
_regex = 's, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g'
postinstallcmds = ['sed -i -r "%s" %%(installdir)s/bin/%s' % (_regex, x) for x in ['h5c++', 'h5pcc']]

dependencies = [
('zlib', '1.2.13'),
('Szip', '2.1.1'),
]

moduleclass = 'data'
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
easyblock = 'CMakeMake'

name = 'kim-api'
version = '2.3.0'

homepage = 'https://openkim.org/'
description = """Open Knowledgebase of Interatomic Models.

KIM is an API and OpenKIM is a collection of interatomic models (potentials) for
atomistic simulations. This is a library that can be used by simulation programs
to get access to the models in the OpenKIM database.

This EasyBuild only installs the API, the models can be installed with the
package openkim-models, or the user can install them manually by running
kim-api-collections-management install user MODELNAME
or
kim-api-collections-management install user OpenKIM
to install them all.
"""

toolchain = {'name': 'intel-compilers', 'version': '2023.2.1'}

source_urls = ['https://s3.openkim.org/kim-api/']
sources = ['%(name)s-%(version)s.txz']
checksums = ['93673bb8fbc0625791f2ee67915d1672793366d10cabc63e373196862c14f991']

dependencies = [
('CMake', '3.27.6'), # Also needed to install models, thus not just a builddependency.
]

maxparallel = 1
modextravars = {
'KIM_API_CMAKE_PREFIX_DIR': '%(installdir)s/lib64'
}

sanity_check_paths = {
'files': ['bin/kim-api-collections-management', 'lib64/libkim-api.%s' % SHLIB_EXT],
'dirs': []
}

moduleclass = 'chem'
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
name = 'LAMMPS'
version = '29Aug2024_update2'
versionsuffix = '-kokkos'

homepage = 'https://www.lammps.org'
description = """LAMMPS is a classical molecular dynamics code, and an acronym
for Large-scale Atomic/Molecular Massively Parallel Simulator. LAMMPS has
potentials for solid-state materials (metals, semiconductors) and soft matter
(biomolecules, polymers) and coarse-grained or mesoscopic systems. It can be
used to model atoms or, more generically, as a parallel particle simulator at
the atomic, meso, or continuum scale. LAMMPS runs on single processors or in
parallel using message-passing techniques and a spatial-decomposition of the
simulation domain. The code is designed to be easy to modify or extend with new
functionality.
"""

toolchain = {'name': 'iomkl', 'version': '2023b'}
toolchainopts = {'cstd': 'c++17', 'openmp': True, 'usempi': True, 'loose': True}

# 'https://github.com/lammps/lammps/archive/'
source_urls = [GITHUB_LOWER_SOURCE]
sources = ['stable_%(version)s.tar.gz']
patches = [
'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch',
'lammps-python-venv.patch',
]
checksums = [
{'stable_29Aug2024_update2.tar.gz': 'f8ca3f021a819ced8658055f7750e235c51b4937ddb621cf1bd7bee08e0b6266'},
{'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch':
'314ab1064af74ddfcf4091dfe9f90fa32cfa4100e8d01fea7b59b019575a7c51'},
{'lammps-python-venv.patch': '84d5687aca5df2d288e1c6152843c9f65c6ed11030a1133cceb128c2846fd049'},
]

builddependencies = [
('CMake', '3.27.6'),
('pkgconf', '2.0.3'),
('archspec', '0.2.2'),
]
dependencies = [
('Python', '3.11.5'),
('libpng', '1.6.40'),
('libjpeg-turbo', '3.0.1'),
('netCDF', '4.9.2'),
('GSL', '2.7'),
('zlib', '1.2.13'),
('gzip', '1.13'),
('cURL', '8.3.0'),
('HDF5', '1.14.3'),
('PCRE', '8.45'),
('libxml2', '2.11.5'),
('FFmpeg', '6.0'),
('Voro++', '0.4.6'),
('kim-api', '2.3.0'),
('Eigen', '3.4.0'),
('PLUMED', '2.9.2'),
('SciPy-bundle', '2023.11'),
# VTK package is auto-disabled if this dep is not available
('VTK', '9.3.0'),
# We use a custom build of MDI
('MDI', '1.4.29'),
('mpi4py', '3.1.5'),
]
if ARCH == 'x86_64':
# TBB and ScaFaCos are an optional dependency when building on Intel arch
dependencies += [
('tbb', '2021.13.0'),
('ScaFaCoS', '1.0.4'),
]

# To use additional custom configuration options, use the 'configopts' easyconfig parameter
# See docs and lammps easyblock for more information.
# https://github.com/lammps/lammps/blob/master/cmake/README.md#lammps-configuration-options

# OpenMP-Kokkos build is default in the current easyblock. One can switch to serial backend of Kokkos,
# which is claimed to be faster in pure MPI calculations
# configopts = "-DKokkos_ENABLE_SERIAL=yes "


# packages auto-enabled by easyblock
# 'GPU' - if cuda package is present and kokkos is disabled
# 'KOKKOS' - if kokkos is enabled (by default)
# 'INTEL' - if builing on Intel CPU
# 'OPENMP' - if OpenMP swithed on in 'toolchainopts'

configopts = ' '.join([
'-DCMAKE_CXX_STANDARD=17',
'-DCMAKE_CXX_STANDARD_REQUIRED=on',
])

# include the following extra packages into the build
general_packages = [
'AMOEBA',
'ASPHERE',
'ATC',
'AWPMD',
'BOCS',
'BODY',
'BPM',
'BROWNIAN',
'CG-DNA',
'CG-SPICA',
'CLASS2',
'COLLOID',
'COLVARS',
'COMPRESS',
'CORESHELL',
'DIELECTRIC',
'DIFFRACTION',
'DIPOLE',
'DPD-BASIC',
'DPD-MESO',
'DPD-REACT',
'DPD-SMOOTH',
'DRUDE',
'EFF',
'ELECTRODE',
'EXTRA-COMPUTE',
'EXTRA-DUMP',
'EXTRA-FIX',
'EXTRA-MOLECULE',
'EXTRA-PAIR',
'FEP',
'GRANULAR',
'H5MD',
'INTERLAYER',
'KIM',
'KSPACE',
'LATBOLTZ',
'LEPTON',
'MACHDYN',
'MANIFOLD',
'MANYBODY',
'MC',
'MDI',
'MEAM',
'MGPT',
'MISC',
'ML-IAP',
'ML-PACE',
'ML-POD',
'ML-RANN',
'ML-SNAP',
'MOFFF',
'MOLECULE',
'MOLFILE',
'MPIIO',
'NETCDF',
'OPT',
'ORIENT',
'PERI',
'PHONON',
'PLUGIN',
'PLUMED',
'POEMS',
'PTM',
'PYTHON',
'QEQ',
'QTB',
'REACTION',
'REAXFF',
'REPLICA',
'RIGID',
'SCAFACOS',
'SHOCK',
'SMTBQ',
'SPH',
'SPIN',
'SRD',
'TALLY',
'UEF',
'VORONOI',
'VTK',
'YAFF',
]

# Excluded packages due to requiring additional (non-trivial) deps
# - ADIOS
# - LATTE
# - MESONT (requires very large files downloaded during build)
# - ML-HDNNP (requires N2P2)
# - ML-QUIP
# - MSCG
# - QMMM (setup seems complex)

runtest = False
moduleclass = 'chem'
40 changes: 40 additions & 0 deletions easybuild/easyconfigs/l/LAMMPS/lammps-python-venv.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Patch Python installation to ensure system packages are used.
Constrain `build<1.4` for compatibility.
diff --git a/python/install.py b/python/install.py
index fd9f95f1bf..42f404224a 100644
--- a/python/install.py
+++ b/python/install.py
@@ -97,7 +97,7 @@ shutil.copy(args.lib,'lammps')
# create a virtual environment for building the wheel
shutil.rmtree('buildwheel', True)
try:
- txt = subprocess.check_output([sys.executable, '-m', 'venv', 'buildwheel'], stderr=subprocess.STDOUT, shell=False)
+ txt = subprocess.check_output([sys.executable, '-m', 'venv', '--system-site-packages', 'buildwheel'], stderr=subprocess.STDOUT, shell=False)
print(txt.decode('UTF-8'))
except subprocess.CalledProcessError as err:
sys.exit("Failed to create a virtual environment: {0}".format(err.output.decode('UTF-8')))
diff --git a/python/makewheel.py b/python/makewheel.py
index f13ad110ce..014756ddbd 100644
--- a/python/makewheel.py
+++ b/python/makewheel.py
@@ -23,8 +23,8 @@ sys.real_prefix = sys.prefix
sys.prefix = base

# update pip and install all requirements to build the wheel
-os.system('python -m pip install --upgrade pip')
-os.system('python -m pip install --upgrade -r wheel_requirements.txt')
+os.system('python -m pip install pip')
+os.system('python -m pip install -r wheel_requirements.txt')

print("Building new binary wheel")
os.system('python -m build -n --wheel -o .')
diff --git a/python/wheel_requirements.txt b/python/wheel_requirements.txt
index dafedeee23..ff4cc9593c 100644
--- a/python/wheel_requirements.txt
+++ b/python/wheel_requirements.txt
@@ -1,4 +1,4 @@
pip
-build
+build<1.4
wheel
setuptools
53 changes: 53 additions & 0 deletions easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# MDI package for LAMMPS
# Author: J. Saßmannshausen (Imperial College London)

easyblock = 'CMakeMake'
name = 'MDI'
version = '1.4.29'

homepage = 'https://github.com/MolSSI-MDI/MDI_Library'
description = """The MolSSI Driver Interface (MDI) project provides a
standardized API for fast, on-the-fly communication between computational
chemistry codes. This greatly simplifies the process of implementing
methods that require the cooperation of multiple software packages and
enables developers to write a single implementation that works across
many different codes. The API is sufficiently general to support a wide
variety of techniques, including QM/MM, ab initio MD, machine learning,
advanced sampling, and path integral MD, while also being straightforwardly
extensible. Communication between codes is handled by the MDI Library, which
enables tight coupling between codes using either the MPI or TCP/IP methods.
"""

toolchain = {'name': 'iompi', 'version': '2023b'}

source_urls = ['https://github.com/MolSSI-%(name)s/MDI_Library/archive']
sources = ['v%(version)s.tar.gz']
checksums = ['6fb9ab2cf01c1a88a183bb481313f3131f0afd041ddea7aeacabe857fbdcb6ad']

builddependencies = [
('CMake', '3.27.6'),
]
dependencies = [
('Python', '3.11.5'),
]

# perform iterative build to get both static and shared libraries
local_common_configopts = '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DPython_EXECUTABLE=$EBROOTPYTHON/bin/python '
configopts = [
local_common_configopts + ' -Dlibtype=STATIC',
local_common_configopts + ' -DBUILD_SHARED_LIBS=ON',
]

modextrapaths = {
'LD_LIBRARY_PATH': 'lib/mdi',
'LIBRARY_PATH': 'lib/mdi',
}

sanity_check_paths = {
'files': ['lib/mdi/libmdi.a', 'lib/mdi/libmdi.%s' % SHLIB_EXT],
'dirs': ['include', 'share'],
}

bin_lib_subdirs = ['lib/mdi']

moduleclass = 'chem'
22 changes: 22 additions & 0 deletions easybuild/easyconfigs/m/mpi4py/mpi4py-3.1.5-iompi-2023b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
easyblock = 'PythonBundle'

name = 'mpi4py'
version = '3.1.5'

homepage = 'https://github.com/mpi4py/mpi4py'
description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for
the Python programming language, allowing any Python program to exploit multiple processors."""

toolchain = {'name': 'iompi', 'version': '2023b'}

dependencies = [
('Python', '3.11.5'),
]

exts_list = [
(name, version, {
'checksums': ['a706e76db9255135c2fb5d1ef54cb4f7b0e4ad9e33cbada7de27626205f2a153'],
}),
]

moduleclass = 'lib'
Loading