namd: add compile options for ROCm (#45553)

* namd:add compile options for ROCm
* Combine --rocm-prefix and its value in a single opts.extend call to ensure they remain ordered correctly and improve code robustness.
* Standardize the code and add ROCm conflicts
* add single_node_gpu conflict

---------

Co-authored-by: U-PALLAS\boudaoud <boudaoud@pc44.pallas.cines.fr>
This commit is contained in:
BOUDAOUD34 2024-08-07 19:54:33 +02:00 committed by GitHub
parent 60c589db28
commit 46efa7e151
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,7 +12,7 @@
from spack.package import *
class Namd(MakefilePackage, CudaPackage):
class Namd(MakefilePackage, CudaPackage, ROCmPackage):
"""NAMD is a parallel molecular dynamics code designed for
high-performance simulation of large biomolecular systems."""
@ -104,6 +104,9 @@ class Namd(MakefilePackage, CudaPackage):
depends_on("python", when="interface=python")
conflicts("+avxtiles", when="@:2.14,3:", msg="AVXTiles algorithm requires NAMD 2.15")
conflicts("+rocm", when="~single_node_gpu")
conflicts("+rocm", when="+cuda", msg="NAMD supports only one GPU backend at a time")
conflicts("+single_node_gpu", when="~cuda~rocm")
# https://www.ks.uiuc.edu/Research/namd/2.12/features.html
# https://www.ks.uiuc.edu/Research/namd/2.13/features.html
@ -294,6 +297,14 @@ def edit(self, spec, prefix):
if "+single_node_gpu" in spec:
opts.extend(["--with-single-node-cuda"])
if "+rocm" in spec:
self._copy_arch_file("hip")
opts.append("--with-hip")
opts.extend(["--rocm-prefix", os.environ["ROCM_PATH"]])
if "+single_node_gpu" in spec:
opts.extend(["--with-single-node-hip"])
config = Executable("./config")
config(self.build_directory, *opts)