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/2023a] LAMMPS v28Oct2024 w/ kokkos CUDA 12.1.1 #22268

Merged

Conversation

smoors
Copy link
Contributor

@smoors smoors commented Feb 6, 2025

@smoors smoors added the update label Feb 6, 2025
Copy link

github-actions bot commented Feb 6, 2025

Updated software LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb

Diff against LAMMPS-29Aug2024-foss-2023b-kokkos.eb

easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024-foss-2023b-kokkos.eb

diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024-foss-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb
index 177e6b4d2c..2c1ee744e8 100644
--- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024-foss-2023b-kokkos.eb
+++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb
@@ -1,66 +1,65 @@
 name = 'LAMMPS'
-version = '29Aug2024'
-versionsuffix = '-kokkos'
+version = '28Oct2024'
+_cuda_suffix = '-CUDA-%(cudaver)s'
+versionsuffix = '-kokkos-mace%s' % _cuda_suffix
+_commit = 'f51963a'
 
-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.
-"""
+homepage = 'https://mace-docs.readthedocs.io/en/latest/guide/lammps.html'
+description = """ACEsuit fork of LAMMPS for using MACE in LAMMPS"""
 
-toolchain = {'name': 'foss', 'version': '2023b'}
-toolchainopts = {'openmp': True, 'usempi': True}
+toolchain = {'name': 'foss', 'version': '2023a'}
+toolchainopts = {'usempi': True}
 
-# 'https://github.com/lammps/lammps/archive/'
-source_urls = [GITHUB_LOWER_SOURCE]
-sources = ['stable_%(version)s.tar.gz']
+sources = [{
+    'source_urls': ['https://github.com/ACEsuit/lammps/archive'],
+    'download_filename': '%s.tar.gz' % _commit,
+    'filename': SOURCE_TAR_GZ,
+}]
 patches = [
     'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch',
 ]
 checksums = [
-    {'stable_29Aug2024.tar.gz': '6112e0cc352c3140a4874c7f74db3c0c8e30134024164509ecf3772b305fde2e'},
+    {'LAMMPS-28Oct2024.tar.gz': '43d1432782806ddae40a9f8fd3a7c7c0dc2fad0c74c440e1b189f42b33da2777'},
     {'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch':
      '723c944b62b9d28427d25e80a7a67049631702d344df49268a6846aa0cd0fe04'},
 ]
 
 builddependencies = [
-    ('CMake', '3.27.6'),
-    ('pkgconf', '2.0.3'),
-    ('archspec', '0.2.2'),
+    ('CMake', '3.26.3'),
+    ('pkgconf', '1.9.5'),
+    ('archspec', '0.2.5'),
 ]
 dependencies = [
-    ('Python', '3.11.5'),
-    ('libpng', '1.6.40'),
-    ('libjpeg-turbo', '3.0.1'),
+    ('CUDA', '12.1.1', '', SYSTEM),
+    ('UCX-CUDA', '1.14.1', _cuda_suffix),
+    ('NCCL', '2.18.3', _cuda_suffix),
+    ('Python', '3.11.3'),
+    ('libpng', '1.6.39'),
+    ('libjpeg-turbo', '2.1.5.1'),
     ('netCDF', '4.9.2'),
     ('GSL', '2.7'),
     ('zlib', '1.2.13'),
-    ('gzip', '1.13'),
-    ('cURL', '8.3.0'),
-    ('HDF5', '1.14.3'),
+    ('gzip', '1.12'),
+    ('cURL', '8.0.1'),
+    ('HDF5', '1.14.0'),
     ('PCRE', '8.45'),
-    ('libxml2', '2.11.5'),
+    ('libxml2', '2.11.4'),
     ('FFmpeg', '6.0'),
     ('Voro++', '0.4.6'),
     ('kim-api', '2.3.0'),
     ('Eigen', '3.4.0'),
-    ('PLUMED', '2.9.2'),
-    ('SciPy-bundle', '2023.11'),
+    ('PLUMED', '2.9.0'),
+    ('SciPy-bundle', '2023.07'),
     # 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'),
+    ('MDI', '1.4.26'),
+    ('PyTorch', '2.1.2', _cuda_suffix),
 ]
 if ARCH == 'x86_64':
     # TBB and ScaFaCos are an optional dependency when building on Intel arch
     dependencies += [
-        ('tbb', '2021.13.0'),
+        ('tbb', '2021.11.0'),
         ('ScaFaCoS', '1.0.4'),
     ]
 
@@ -70,8 +69,7 @@ if ARCH == 'x86_64':
 
 # 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 "
-
+# configopts = "-DKokkos_ENABLE_SERIAL=yes "
 
 # packages auto-enabled by easyblock
 # 'GPU'    - if cuda package is present and kokkos is disabled
@@ -119,7 +117,8 @@ general_packages = [
     'KSPACE',
     'LATBOLTZ',
     'LEPTON',
-    'MACHDYN',
+    # installation fails with MACHDYN on zen2
+    # 'MACHDYN',
     'MANIFOLD',
     'MANYBODY',
     'MC',
@@ -132,6 +131,7 @@ general_packages = [
     'ML-POD',
     'ML-RANN',
     'ML-SNAP',
+    'ML-MACE',
     'MOFFF',
     'MOLECULE',
     'MOLFILE',
@@ -174,4 +174,15 @@ general_packages = [
 # - MSCG
 # - QMMM (setup seems complex)
 
+# hardware-specific option
+# note: only the highest capability will be used
+# cuda_compute_capabilities = ['9.0']
+
+configopts = ' '.join([
+    '-D CMAKE_CXX_STANDARD=17',
+    '-D CMAKE_CXX_STANDARD_REQUIRED=ON',
+    '-D CMAKE_CXX_COMPILER=%(start_dir)s/lib/kokkos/bin/nvcc_wrapper',
+    '-D CMAKE_PREFIX_PATH=$EBROOTPYTORCH/lib/python%(pyshortver)s/site-packages/torch',
+])
+
 moduleclass = 'chem'
Diff against LAMMPS-2Aug2023_update2-foss-2023a-kokkos-CUDA-12.1.1.eb

easybuild/easyconfigs/l/LAMMPS/LAMMPS-2Aug2023_update2-foss-2023a-kokkos-CUDA-12.1.1.eb

diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-2Aug2023_update2-foss-2023a-kokkos-CUDA-12.1.1.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb
index a352e5a1b1..2c1ee744e8 100644
--- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-2Aug2023_update2-foss-2023a-kokkos-CUDA-12.1.1.eb
+++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb
@@ -1,36 +1,27 @@
 name = 'LAMMPS'
-version = '2Aug2023_update2'
+version = '28Oct2024'
 _cuda_suffix = '-CUDA-%(cudaver)s'
-versionsuffix = '-kokkos' + _cuda_suffix
+versionsuffix = '-kokkos-mace%s' % _cuda_suffix
+_commit = 'f51963a'
 
-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.
-"""
+homepage = 'https://mace-docs.readthedocs.io/en/latest/guide/lammps.html'
+description = """ACEsuit fork of LAMMPS for using MACE in LAMMPS"""
 
 toolchain = {'name': 'foss', 'version': '2023a'}
-toolchainopts = {'openmp': True, 'usempi': True}
+toolchainopts = {'usempi': True}
 
-# 'https://github.com/lammps/lammps/archive/'
-source_urls = [GITHUB_LOWER_SOURCE]
-sources = ['stable_%(version)s.tar.gz']
+sources = [{
+    'source_urls': ['https://github.com/ACEsuit/lammps/archive'],
+    'download_filename': '%s.tar.gz' % _commit,
+    'filename': SOURCE_TAR_GZ,
+}]
 patches = [
     'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch',
-    'LAMMPS-2Aug2023_fix-timestep-balance-example.patch',
 ]
 checksums = [
-    {'stable_2Aug2023_update2.tar.gz': '3bcecabc9cad08d0a4e4d989b52d29c58505f7ead8ebacf43c9db8d9fd3d564a'},
+    {'LAMMPS-28Oct2024.tar.gz': '43d1432782806ddae40a9f8fd3a7c7c0dc2fad0c74c440e1b189f42b33da2777'},
     {'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch':
      '723c944b62b9d28427d25e80a7a67049631702d344df49268a6846aa0cd0fe04'},
-    {'LAMMPS-2Aug2023_fix-timestep-balance-example.patch':
-     '6f68387ced2b4bd0a06e4c3d31b0ffd47042476777d87d8a0ca6b19a4e6a1777'},
 ]
 
 builddependencies = [
@@ -63,6 +54,7 @@ dependencies = [
     ('VTK', '9.3.0'),
     # We use a custom build of MDI
     ('MDI', '1.4.26'),
+    ('PyTorch', '2.1.2', _cuda_suffix),
 ]
 if ARCH == 'x86_64':
     # TBB and ScaFaCos are an optional dependency when building on Intel arch
@@ -77,8 +69,7 @@ if ARCH == 'x86_64':
 
 # 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 "
-
+# configopts = "-DKokkos_ENABLE_SERIAL=yes "
 
 # packages auto-enabled by easyblock
 # 'GPU'    - if cuda package is present and kokkos is disabled
@@ -126,7 +117,8 @@ general_packages = [
     'KSPACE',
     'LATBOLTZ',
     'LEPTON',
-    'MACHDYN',
+    # installation fails with MACHDYN on zen2
+    # 'MACHDYN',
     'MANIFOLD',
     'MANYBODY',
     'MC',
@@ -139,6 +131,7 @@ general_packages = [
     'ML-POD',
     'ML-RANN',
     'ML-SNAP',
+    'ML-MACE',
     'MOFFF',
     'MOLECULE',
     'MOLFILE',
@@ -185,4 +178,11 @@ general_packages = [
 # note: only the highest capability will be used
 # cuda_compute_capabilities = ['9.0']
 
+configopts = ' '.join([
+    '-D CMAKE_CXX_STANDARD=17',
+    '-D CMAKE_CXX_STANDARD_REQUIRED=ON',
+    '-D CMAKE_CXX_COMPILER=%(start_dir)s/lib/kokkos/bin/nvcc_wrapper',
+    '-D CMAKE_PREFIX_PATH=$EBROOTPYTORCH/lib/python%(pyshortver)s/site-packages/torch',
+])
+
 moduleclass = 'chem'
Diff against LAMMPS-2Aug2023_update2-foss-2023a-kokkos.eb

easybuild/easyconfigs/l/LAMMPS/LAMMPS-2Aug2023_update2-foss-2023a-kokkos.eb

diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-2Aug2023_update2-foss-2023a-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb
index ea0378fb80..2c1ee744e8 100644
--- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-2Aug2023_update2-foss-2023a-kokkos.eb
+++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-28Oct2024-foss-2023a-kokkos-mace-CUDA-12.1.1.eb
@@ -1,35 +1,27 @@
 name = 'LAMMPS'
-version = '2Aug2023_update2'
-versionsuffix = '-kokkos'
+version = '28Oct2024'
+_cuda_suffix = '-CUDA-%(cudaver)s'
+versionsuffix = '-kokkos-mace%s' % _cuda_suffix
+_commit = 'f51963a'
 
-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.
-"""
+homepage = 'https://mace-docs.readthedocs.io/en/latest/guide/lammps.html'
+description = """ACEsuit fork of LAMMPS for using MACE in LAMMPS"""
 
 toolchain = {'name': 'foss', 'version': '2023a'}
-toolchainopts = {'openmp': True, 'usempi': True}
+toolchainopts = {'usempi': True}
 
-# 'https://github.com/lammps/lammps/archive/'
-source_urls = [GITHUB_LOWER_SOURCE]
-sources = ['stable_%(version)s.tar.gz']
+sources = [{
+    'source_urls': ['https://github.com/ACEsuit/lammps/archive'],
+    'download_filename': '%s.tar.gz' % _commit,
+    'filename': SOURCE_TAR_GZ,
+}]
 patches = [
     'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch',
-    'LAMMPS-2Aug2023_fix-timestep-balance-example.patch',
 ]
 checksums = [
-    {'stable_2Aug2023_update2.tar.gz': '3bcecabc9cad08d0a4e4d989b52d29c58505f7ead8ebacf43c9db8d9fd3d564a'},
+    {'LAMMPS-28Oct2024.tar.gz': '43d1432782806ddae40a9f8fd3a7c7c0dc2fad0c74c440e1b189f42b33da2777'},
     {'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch':
      '723c944b62b9d28427d25e80a7a67049631702d344df49268a6846aa0cd0fe04'},
-    {'LAMMPS-2Aug2023_fix-timestep-balance-example.patch':
-     '6f68387ced2b4bd0a06e4c3d31b0ffd47042476777d87d8a0ca6b19a4e6a1777'},
 ]
 
 builddependencies = [
@@ -38,6 +30,9 @@ builddependencies = [
     ('archspec', '0.2.5'),
 ]
 dependencies = [
+    ('CUDA', '12.1.1', '', SYSTEM),
+    ('UCX-CUDA', '1.14.1', _cuda_suffix),
+    ('NCCL', '2.18.3', _cuda_suffix),
     ('Python', '3.11.3'),
     ('libpng', '1.6.39'),
     ('libjpeg-turbo', '2.1.5.1'),
@@ -59,6 +54,7 @@ dependencies = [
     ('VTK', '9.3.0'),
     # We use a custom build of MDI
     ('MDI', '1.4.26'),
+    ('PyTorch', '2.1.2', _cuda_suffix),
 ]
 if ARCH == 'x86_64':
     # TBB and ScaFaCos are an optional dependency when building on Intel arch
@@ -73,8 +69,7 @@ if ARCH == 'x86_64':
 
 # 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 "
-
+# configopts = "-DKokkos_ENABLE_SERIAL=yes "
 
 # packages auto-enabled by easyblock
 # 'GPU'    - if cuda package is present and kokkos is disabled
@@ -122,7 +117,8 @@ general_packages = [
     'KSPACE',
     'LATBOLTZ',
     'LEPTON',
-    'MACHDYN',
+    # installation fails with MACHDYN on zen2
+    # 'MACHDYN',
     'MANIFOLD',
     'MANYBODY',
     'MC',
@@ -135,6 +131,7 @@ general_packages = [
     'ML-POD',
     'ML-RANN',
     'ML-SNAP',
+    'ML-MACE',
     'MOFFF',
     'MOLECULE',
     'MOLFILE',
@@ -177,4 +174,15 @@ general_packages = [
 # - MSCG
 # - QMMM (setup seems complex)
 
+# hardware-specific option
+# note: only the highest capability will be used
+# cuda_compute_capabilities = ['9.0']
+
+configopts = ' '.join([
+    '-D CMAKE_CXX_STANDARD=17',
+    '-D CMAKE_CXX_STANDARD_REQUIRED=ON',
+    '-D CMAKE_CXX_COMPILER=%(start_dir)s/lib/kokkos/bin/nvcc_wrapper',
+    '-D CMAKE_PREFIX_PATH=$EBROOTPYTORCH/lib/python%(pyshortver)s/site-packages/torch',
+])
+
 moduleclass = 'chem'

@smoors smoors marked this pull request as draft February 6, 2025 13:44
@smoors
Copy link
Contributor Author

smoors commented Feb 7, 2025

Test report by @smoors
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3582
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
node403.hydra.os - Linux Rocky Linux 8.10, x86_64, AMD EPYC 7282 16-Core Processor (zen2), 1 x NVIDIA NVIDIA A100-PCIE-40GB, 550.90.07, Python 3.6.8
See https://gist.github.com/smoors/3fb1612a854bf563406eefdd2d9a7a90 for a full test report.

@github-actions github-actions bot removed the update label Feb 8, 2025
@github-actions github-actions bot added the update label Feb 8, 2025
@smoors smoors marked this pull request as draft February 8, 2025 11:53
@github-actions github-actions bot removed the update label Feb 8, 2025
@github-actions github-actions bot added the update label Feb 8, 2025
@smoors
Copy link
Contributor Author

smoors commented Feb 8, 2025

Test report by @smoors
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3485
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
node401.hydra.os - Linux Rocky Linux 8.10, x86_64, AMD EPYC 7282 16-Core Processor (zen2), 1 x NVIDIA NVIDIA A100-PCIE-40GB, 550.90.07, Python 3.6.8
See https://gist.github.com/smoors/8bd4d7753167c2d4ca414a44a71923a7 for a full test report.

@smoors
Copy link
Contributor Author

smoors commented Feb 8, 2025

@boegelbot please test @ jsc-zen3-a100
EB_ARGS="--include-easyblocks-from-pr=3485 --cuda-compute-capabilities=8.0"

@boegelbot
Copy link
Collaborator

@smoors: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=22268 EB_ARGS="--include-easyblocks-from-pr=3485 --cuda-compute-capabilities=8.0" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_22268 --ntasks=8 --partition=jsczen3g --gres=gpu:1 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 5681

Test results coming soon (I hope)...

- notification for comment with ID 2645773264 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3485
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
jsczen3g1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), 1 x NVIDIA NVIDIA A100 80GB PCIe, 555.42.06, Python 3.9.21
See https://gist.github.com/boegelbot/d840ea9eac718409fc6f500744721775 for a full test report.

@smoors smoors marked this pull request as ready for review February 10, 2025 09:02
@hajgato hajgato added this to the release after 4.9.4 milestone Feb 11, 2025
@hajgato hajgato merged commit 2d07ab4 into easybuilders:develop Feb 11, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants