diff options
-rw-r--r-- | var/spack/repos/builtin/packages/xsbench/package.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/var/spack/repos/builtin/packages/xsbench/package.py b/var/spack/repos/builtin/packages/xsbench/package.py index 5edd363a23..fea28cf7bd 100644 --- a/var/spack/repos/builtin/packages/xsbench/package.py +++ b/var/spack/repos/builtin/packages/xsbench/package.py @@ -7,7 +7,7 @@ from spack.package import * -class Xsbench(MakefilePackage): +class Xsbench(MakefilePackage, CudaPackage): """XSBench is a mini-app representing a key computational kernel of the Monte Carlo neutronics application OpenMC. A full explanation of the theory and purpose of XSBench @@ -18,6 +18,7 @@ class Xsbench(MakefilePackage): tags = ["proxy-app", "ecp-proxy-app"] + version("20", sha256="3430328267432b4c29605f248809caec3e8b0e3442d4dcd672fa09b8bb9aa1b6") version("19", sha256="57cc44ae3b0a50d33fab6dd48da13368720d2aa1b91cde47d51da78bf656b97e") version("18", sha256="a9a544eeacd1be8d687080d2df4eeb701c04eda31d3806e7c3ea1ff36c26f4b0") version("14", sha256="595afbcba8c1079067d5d17eedcb4ab0c1d115f83fd6f8c3de01d74b23015e2d") @@ -25,22 +26,33 @@ class Xsbench(MakefilePackage): variant("mpi", default=True, description="Build with MPI support") variant("openmp", default=True, description="Build with OpenMP support") + variant("cuda", default=False, when="@19:", description="Build with CUDA support") depends_on("mpi", when="+mpi") + conflicts("cuda_arch=none", when="+cuda", msg="Must select a CUDA architecture") + conflicts("+cuda", when="+openmp", msg="OpenMP must be disabled to support CUDA") + @property def build_directory(self): if self.spec.satisfies("@:18"): return "src" - else: + + if "+openmp" in self.spec: return "openmp-threading" + if "+cuda" in self.spec: + return "cuda" + @property def build_targets(self): targets = [] cflags = "" + if "+cuda" in self.spec: + return ["SM_VERSION={0}".format(self.spec.variants["cuda_arch"].value[0])] + if not self.spec.satisfies("%nvhpc@:20.11"): cflags = "-std=gnu99" |