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:
parent
60c589db28
commit
46efa7e151
@ -12,7 +12,7 @@
|
|||||||
from spack.package import *
|
from spack.package import *
|
||||||
|
|
||||||
|
|
||||||
class Namd(MakefilePackage, CudaPackage):
|
class Namd(MakefilePackage, CudaPackage, ROCmPackage):
|
||||||
"""NAMD is a parallel molecular dynamics code designed for
|
"""NAMD is a parallel molecular dynamics code designed for
|
||||||
high-performance simulation of large biomolecular systems."""
|
high-performance simulation of large biomolecular systems."""
|
||||||
|
|
||||||
@ -104,6 +104,9 @@ class Namd(MakefilePackage, CudaPackage):
|
|||||||
depends_on("python", when="interface=python")
|
depends_on("python", when="interface=python")
|
||||||
|
|
||||||
conflicts("+avxtiles", when="@:2.14,3:", msg="AVXTiles algorithm requires NAMD 2.15")
|
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.12/features.html
|
||||||
# https://www.ks.uiuc.edu/Research/namd/2.13/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:
|
if "+single_node_gpu" in spec:
|
||||||
opts.extend(["--with-single-node-cuda"])
|
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 = Executable("./config")
|
||||||
|
|
||||||
config(self.build_directory, *opts)
|
config(self.build_directory, *opts)
|
||||||
|
Loading…
Reference in New Issue
Block a user