summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsnehring <7978778+snehring@users.noreply.github.com>2024-08-23 11:37:38 -0500
committerGitHub <noreply@github.com>2024-08-23 09:37:38 -0700
commit86050decb954974a5f7e44b5003653be2957adcb (patch)
tree1f1b7e7d30411e397515ad953a389b225c8e2f2e
parentfff8165f2f45ed672ff7e8d41d12e70e2a95e89e (diff)
downloadspack-86050decb954974a5f7e44b5003653be2957adcb.tar.gz
spack-86050decb954974a5f7e44b5003653be2957adcb.tar.bz2
spack-86050decb954974a5f7e44b5003653be2957adcb.tar.xz
spack-86050decb954974a5f7e44b5003653be2957adcb.zip
gromacs: add env mods for cufftmp w/ gcc (#45887)
-rw-r--r--var/spack/repos/builtin/packages/gromacs/package.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py
index a8ede744d7..6f95180701 100644
--- a/var/spack/repos/builtin/packages/gromacs/package.py
+++ b/var/spack/repos/builtin/packages/gromacs/package.py
@@ -158,6 +158,12 @@ class Gromacs(CMakePackage, CudaPackage):
conflicts(
"+mdrun_only", when="@2021:", msg="mdrun-only build option was removed for GROMACS 2021."
)
+ variant(
+ "nvshmem",
+ default=False,
+ description="Enable nvshmem support for nvidia gpus",
+ when="+cuda+mpi",
+ )
variant("openmp", default=True, description="Enables OpenMP at configure time")
variant("openmp_max_threads", default="none", description="Max number of OpenMP threads")
conflicts(
@@ -302,6 +308,7 @@ class Gromacs(CMakePackage, CudaPackage):
depends_on("cp2k@8.1:", when="+cp2k")
depends_on("nvhpc", when="+cufftmp")
+ depends_on("nvhpc", when="+nvshmem")
depends_on("heffte", when="+heffte")
requires(
@@ -410,6 +417,20 @@ class Gromacs(CMakePackage, CudaPackage):
r"-gencode;arch=compute_20,code=sm_21;?", "", "cmake/gmxManageNvccConfig.cmake"
)
+ def setup_run_environment(self, env):
+ if self.spec.satisfies("+cufftmp"):
+ env.append_path(
+ "LD_LIBRARY_PATH",
+ join_path(
+ self.spec["nvhpc"].prefix,
+ f"Linux_{self.spec.target.family}",
+ self.spec["nvhpc"].version,
+ "comm_libs",
+ "nvshmem",
+ "lib",
+ ),
+ )
+
class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
@run_after("build")
@@ -545,6 +566,9 @@ class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
if "+cuda" in self.spec:
options.append("-DCUDA_TOOLKIT_ROOT_DIR:STRING=" + self.spec["cuda"].prefix)
+ if not self.spec.satisfies("cuda_arch=none"):
+ cuda_arch = self.spec.variants["cuda_arch"].value
+ options.append(f"-DGMX_CUDA_TARGET_SM:STRING={';'.join(cuda_arch)}")
options.append("-DGMX_EXTERNAL_LAPACK:BOOL=ON")
if self.spec["lapack"].libs:
@@ -660,6 +684,16 @@ class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
options.append(
"-DGMX_OPENMP_MAX_THREADS=%s" % self.spec.variants["openmp_max_threads"].value
)
+ if self.spec.satisfies("+nvshmem"):
+ options.append("-DGMX_NVSHMEM:BOOL=ON")
+ nvshmem_root = join_path(
+ self.spec["nvhpc"].prefix,
+ f"Linux_{self.spec.target.family}",
+ self.spec["nvhpc"].version,
+ "comm_libs",
+ "nvshmem",
+ )
+ options.append(f"-DNVSHMEM_ROOT={nvshmem_root}")
if self.spec["lapack"].name in INTEL_MATH_LIBRARIES:
# fftw-api@3 is provided by intel-mkl or intel-parllel-studio
@@ -703,3 +737,17 @@ class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
else:
options.append("-DGMX_VERSION_STRING_OF_FORK=spack")
return options
+
+ def setup_build_environment(self, env):
+ if self.spec.satisfies("+cufftmp"):
+ env.append_path(
+ "LD_LIBRARY_PATH",
+ join_path(
+ self.spec["nvhpc"].prefix,
+ f"Linux_{self.spec.target.family}",
+ self.spec["nvhpc"].version,
+ "comm_libs",
+ "nvshmem",
+ "lib",
+ ),
+ )