summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorRichard Berger <rberger@lanl.gov>2023-12-01 07:13:56 -0700
committerGitHub <noreply@github.com>2023-12-01 07:13:56 -0700
commit42bac83c2ee31b3dcabb49dbe48961af4832187d (patch)
tree04b637e75b9dcd59b147a61c3c2b1620a13e0d51 /var
parent7e38e9e515fe430a2a8680e4dce4f3685feb25d7 (diff)
downloadspack-42bac83c2ee31b3dcabb49dbe48961af4832187d.tar.gz
spack-42bac83c2ee31b3dcabb49dbe48961af4832187d.tar.bz2
spack-42bac83c2ee31b3dcabb49dbe48961af4832187d.tar.xz
spack-42bac83c2ee31b3dcabb49dbe48961af4832187d.zip
LAMMPS updates (#40879)
* lammps: add new stable version 20230802.1 * lammps: add missing potential download for +mesont * lammps: fix python package install * Update var/spack/repos/builtin/packages/lammps/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> * lammps: py-numpy and py-mpi4py should be build and run deps * lammps: add new 20231121 release - MPIIO package has been removed -> disable mpiio variant - LAMMPS_EXCEPTIONS is now always on -> disable exceptions variant - CMake 3.16+ is now required - Kokkos 4.1.0 is now supported --------- Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/lammps/package.py72
1 files changed, 59 insertions, 13 deletions
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index b2d3d11133..85374ce78b 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -3,13 +3,14 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import datetime as dt
+import os
import archspec
from spack.package import *
-class Lammps(CMakePackage, CudaPackage, ROCmPackage):
+class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension):
"""LAMMPS stands for Large-scale Atomic/Molecular Massively
Parallel Simulator.
"""
@@ -28,10 +29,16 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
# marked deprecated=True
# * patch releases older than a stable release should be marked deprecated=True
version("develop", branch="develop")
+ version("20231121", sha256="704d8a990874a425bcdfe0245faf13d712231ba23f014a3ebc27bc14398856f1")
+ version(
+ "20230802.1",
+ sha256="0e5568485e5ee080412dba44a1b7a93f864f1b5c75121f11d528854269953ed0",
+ preferred=True,
+ )
version(
"20230802",
sha256="48dc8b0b0583689e80ea2052275acbc3e3fce89707ac557e120db5564257f7df",
- preferred=True,
+ deprecated=True,
)
version(
"20230615",
@@ -343,6 +350,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
)
stable_versions = {
+ "20230802.1",
"20230802",
"20220623.4",
"20220623.3",
@@ -437,7 +445,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
"mofff": {"when": "@20210702:"},
"molecule": {"default": True},
"molfile": {"when": "@20210702:"},
- "mpiio": {},
+ "mpiio": {"when": "@:20230802.1"},
"netcdf": {"when": "@20210702:"},
"openmp-package": {},
"opt": {},
@@ -530,7 +538,12 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
variant("ffmpeg", default=False, description="Build with ffmpeg support")
variant("openmp", default=True, description="Build with OpenMP")
variant("opencl", default=False, description="Build with OpenCL")
- variant("exceptions", default=False, description="Build with lammps exceptions")
+ variant(
+ "exceptions",
+ default=False,
+ description="Build with lammps exceptions",
+ when="@:20230802.1",
+ )
variant(
"cuda_mps",
default=False,
@@ -563,6 +576,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
multi=False,
)
+ depends_on("cmake@3.16:", when="@20231121:")
depends_on("mpi", when="+mpi")
depends_on("mpi", when="+mpiio")
depends_on("fftw-api@3", when="+kspace")
@@ -602,11 +616,14 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
depends_on("plumed", when="+plumed")
depends_on("eigen@3:", when="+user-smd")
depends_on("eigen@3:", when="+machdyn")
- depends_on("py-cython", when="+mliap+python")
- depends_on("py-cython", when="+ml-iap+python")
- depends_on("py-numpy", when="+python")
- depends_on("py-mpi4py", when="+python+mpi")
- depends_on("py-setuptools", when="@20220217:+python", type="build")
+ depends_on("py-cython", when="+mliap+python", type="build")
+ depends_on("py-cython", when="+ml-iap+python", type="build")
+ depends_on("py-pip", when="+python", type="build")
+ depends_on("py-wheel", when="+python", type="build")
+ depends_on("py-build", when="+python", type="build")
+ depends_on("py-numpy", when="+python", type=("build", "run"))
+ depends_on("py-mpi4py", when="+python+mpi", type=("build", "run"))
+ depends_on("py-setuptools@42:", when="@20220217:+python", type=("build", "run"))
depends_on("n2p2@2.1.4:", when="+user-hdnnp")
depends_on("n2p2@2.1.4:", when="+ml-hdnnp")
depends_on("n2p2+shared", when="+lib ^n2p2")
@@ -686,8 +703,8 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
# Older LAMMPS does not compile with Kokkos 4.x
conflicts(
"^kokkos@4:",
- when="@:20230802",
- msg="LAMMPS is incompatible with Kokkos 4.x until @20230802",
+ when="@:20230802.1",
+ msg="LAMMPS is incompatible with Kokkos 4.x until @20230802.1",
)
patch("lib.patch", when="@20170901")
@@ -706,6 +723,16 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
)
patch("hip_cmake.patch", when="@20220623:20221222 ~kokkos+rocm")
+ # Add large potential files
+ resource(
+ name="C_10_10.mesocnt",
+ url="https://download.lammps.org/potentials/C_10_10.mesocnt",
+ sha256="923f600a081d948eb8b4510f84aa96167b5a6c3e1aba16845d2364ae137dc346",
+ expand=False,
+ placement={"C_10_10.mesocnt": "potentials/C_10_10.mesocnt"},
+ when="+mesont",
+ )
+
root_cmakelists_dir = "cmake"
def cmake_args(self):
@@ -723,6 +750,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
self.define_from_variant("{}_MPI".format(mpi_prefix), "mpi"),
self.define_from_variant("BUILD_OMP", "openmp"),
self.define("ENABLE_TESTING", self.run_tests),
+ self.define("DOWNLOAD_POTENTIALS", False),
]
if "~kokkos" in spec:
# LAMMPS can be build with the GPU package OR the KOKKOS package
@@ -824,6 +852,9 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
if "+rocm" in spec:
args.append(self.define("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
+ if "+python" in spec:
+ args.append(self.define("Python_EXECUTABLE", spec["python"].command.path))
+
return args
def setup_build_environment(self, env):
@@ -833,5 +864,20 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage):
def setup_run_environment(self, env):
env.set("LAMMPS_POTENTIALS", self.prefix.share.lammps.potentials)
if "+python" in self.spec:
- env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
- env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)
+ if self.spec.platform == "darwin":
+ env.prepend_path("DYLD_FALLBACK_LIBRARY_PATH", self.prefix.lib)
+ env.prepend_path("DYLD_FALLBACK_LIBRARY_PATH", self.prefix.lib64)
+ else:
+ env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
+ env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)
+
+ @run_after("install")
+ def install_python(self):
+ # do LAMMPS Python package installation using pip
+ if self.spec.satisfies("@20230328: +python"):
+ with working_dir("python"):
+ os.environ["LAMMPS_VERSION_FILE"] = join_path(
+ self.stage.source_path, "src", "version.h"
+ )
+ args = std_pip_args + ["--prefix=" + self.prefix, "."]
+ pip(*args)