Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

{chem}[foss/2021a,foss/2021b] LAMMPS v23Jun2022 w/ Python 3.9.5 + 3.9.6 and CUDA #15900

Merged
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
name = 'LAMMPS'
version = '23Jun2022'
versionsuffix = '-kokkos'
_cuda_suffix = '-CUDA-%(cudaver)s'
versionsuffix += _cuda_suffix

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': 'foss', 'version': '2021a'}
toolchainopts = {'openmp': True, 'usempi': True}

# 'https://github.com/lammps/lammps/archive/'
source_urls = [GITHUB_LOWER_SOURCE]
sources = [
'stable_%(version)s_update1.tar.gz',
]
checksums = ['58e3b2b984f8935bb0db5631e143be2826c45ffd48844f7c394f36624a3e17a2']

builddependencies = [
('CMake', '3.20.1'),
('pkg-config', '0.29.2'),
('archspec', '0.1.2'),
]

dependencies = [
('CUDA', '11.3.1', '', SYSTEM),
('UCX-CUDA', '1.10.0', _cuda_suffix),
('NCCL', '2.10.3', _cuda_suffix),
('Python', '3.9.5'),
('libpng', '1.6.37'),
('libjpeg-turbo', '2.0.6'),
('netCDF', '4.8.0'),
('GSL', '2.7'),
('zlib', '1.2.11'),
('gzip', '1.10'),
('cURL', '7.76.0'),
('HDF5', '1.10.7'),
# ('tbb', '2020.3'), # Optionally required by Intel package but has a link problem when using nvlink
('PCRE', '8.44'),
('libxml2', '2.9.10'),
('FFmpeg', '4.3.2'),
('Voro++', '0.4.6'),
('kim-api', '2.2.1'),
('Eigen', '3.3.9'),
('PLUMED', '2.7.2'),
('ScaFaCoS', '1.0.1'),
('SciPy-bundle', '2021.05'),
# VTK package is auto-disabled if this dep is not available
# ('VTK', '9.0.1'),
]

# 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)


# include the following extra packages into the build
general_packages = [
'ASPHERE',
'ATC',
'AWPMD',
'BOCS',
'BODY',
'BPM',
'BROWNIAN',
'CG-DNA',
'CG-SDK',
'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',
'MANIFOLD',
# 'MACHDYN', # Some issue related to Eigen 3.3.9 when using Kokkos
'MANYBODY',
'MC',
'MEAM',
'MGPT',
'MISC',
'ML-IAP',
'ML-PACE',
'ML-RANN',
'ML-SNAP',
'MOFFF',
'MOLECULE',
'MOLFILE',
'MPIIO',
'NETCDF',
'OPENMP',
'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)

# hardware-specific option
# cuda_compute_capabilities = ['8.0']

moduleclass = 'chem'
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
name = 'LAMMPS'
version = '23Jun2022'
versionsuffix = '-kokkos'
_cuda_suffix = '-CUDA-%(cudaver)s'
versionsuffix += _cuda_suffix

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': 'foss', 'version': '2021b'}
toolchainopts = {'openmp': True, 'usempi': True}

# 'https://github.com/lammps/lammps/archive/'
source_urls = [GITHUB_LOWER_SOURCE]
sources = [
'stable_%(version)s_update1.tar.gz',
]
checksums = ['58e3b2b984f8935bb0db5631e143be2826c45ffd48844f7c394f36624a3e17a2']

builddependencies = [
('CMake', '3.22.1'),
('pkg-config', '0.29.2'),
('archspec', '0.1.3'),
]
dependencies = [
('CUDA', '11.4.1', '', SYSTEM),
('UCX-CUDA', '1.11.2', _cuda_suffix),
('NCCL', '2.10.3', _cuda_suffix),
('Python', '3.9.6'),
('libpng', '1.6.37'),
('libjpeg-turbo', '2.0.6'),
('netCDF', '4.8.1'),
('GSL', '2.7'),
('zlib', '1.2.11'),
('gzip', '1.10'),
('cURL', '7.78.0'),
('HDF5', '1.12.1'),
# ('tbb', '2020.3'), # Optionally required by Intel package but has a link problem when using nvlink
('PCRE', '8.45'),
('libxml2', '2.9.10'),
('FFmpeg', '4.3.2'),
('Voro++', '0.4.6'),
('kim-api', '2.3.0'),
('Eigen', '3.4.0'),
('PLUMED', '2.7.3'),
('ScaFaCoS', '1.0.1'),
('SciPy-bundle', '2021.10'),
# VTK package is auto-disabled if this dep is not available
('VTK', '9.1.0'),
]

# 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)

# GCC 11/12 defaults to C++17 standard, need to be consistent
configopts = "-DKokkos_CXX_STANDARD=17 "

# include the following extra packages into the build
general_packages = [
'ASPHERE',
'ATC',
'AWPMD',
'BOCS',
'BODY',
'BPM',
'BROWNIAN',
'CG-DNA',
'CG-SDK',
'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',
'MANIFOLD',
'MACHDYN',
'MANYBODY',
'MC',
'MEAM',
'MGPT',
'MISC',
'ML-IAP',
'ML-PACE',
'ML-RANN',
'ML-SNAP',
'MOFFF',
'MOLECULE',
'MOLFILE',
'MPIIO',
'NETCDF',
'OPENMP',
'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)

# hardware-specific option
# cuda_compute_capabilities = ['8.0']

moduleclass = 'chem'
6 changes: 5 additions & 1 deletion test/easyconfigs/easyconfigs.py
Original file line number Diff line number Diff line change
Expand Up @@ -1422,7 +1422,11 @@ def template_easyconfig_test(self, spec):
# 4th value is toolchain spec
if len(dumped_dep) >= 4:
if len(orig_dep) >= 4:
self.assertEqual(dumped_dep[3], orig_dep[3])
# A SYSTEM toolchain is dumped as True
if orig_dep[3] == {'version': 'system', 'name': 'system'}:
self.assertEqual(dumped_dep[3], True)
else:
self.assertEqual(dumped_dep[3], orig_dep[3])
boegel marked this conversation as resolved.
Show resolved Hide resolved
else:
# if a subtoolchain is specifed (only) in the dumped easyconfig,
# it should *not* be the same as the parent toolchain
Expand Down