xsbench: update version and add cuda support (#34597)
* Update xsbench to version 20 XSBench version 20 has implementations for new architectures and accelerators. * Added CUDA support for XSBench * Fixed style issues
This commit is contained in:
parent
d2618cd640
commit
006969a8cd
1 changed files with 14 additions and 2 deletions
|
@ -7,7 +7,7 @@
|
||||||
from spack.package import *
|
from spack.package import *
|
||||||
|
|
||||||
|
|
||||||
class Xsbench(MakefilePackage):
|
class Xsbench(MakefilePackage, CudaPackage):
|
||||||
"""XSBench is a mini-app representing a key computational
|
"""XSBench is a mini-app representing a key computational
|
||||||
kernel of the Monte Carlo neutronics application OpenMC.
|
kernel of the Monte Carlo neutronics application OpenMC.
|
||||||
A full explanation of the theory and purpose of XSBench
|
A full explanation of the theory and purpose of XSBench
|
||||||
|
@ -18,6 +18,7 @@ class Xsbench(MakefilePackage):
|
||||||
|
|
||||||
tags = ["proxy-app", "ecp-proxy-app"]
|
tags = ["proxy-app", "ecp-proxy-app"]
|
||||||
|
|
||||||
|
version("20", sha256="3430328267432b4c29605f248809caec3e8b0e3442d4dcd672fa09b8bb9aa1b6")
|
||||||
version("19", sha256="57cc44ae3b0a50d33fab6dd48da13368720d2aa1b91cde47d51da78bf656b97e")
|
version("19", sha256="57cc44ae3b0a50d33fab6dd48da13368720d2aa1b91cde47d51da78bf656b97e")
|
||||||
version("18", sha256="a9a544eeacd1be8d687080d2df4eeb701c04eda31d3806e7c3ea1ff36c26f4b0")
|
version("18", sha256="a9a544eeacd1be8d687080d2df4eeb701c04eda31d3806e7c3ea1ff36c26f4b0")
|
||||||
version("14", sha256="595afbcba8c1079067d5d17eedcb4ab0c1d115f83fd6f8c3de01d74b23015e2d")
|
version("14", sha256="595afbcba8c1079067d5d17eedcb4ab0c1d115f83fd6f8c3de01d74b23015e2d")
|
||||||
|
@ -25,22 +26,33 @@ class Xsbench(MakefilePackage):
|
||||||
|
|
||||||
variant("mpi", default=True, description="Build with MPI support")
|
variant("mpi", default=True, description="Build with MPI support")
|
||||||
variant("openmp", default=True, description="Build with OpenMP 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")
|
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
|
@property
|
||||||
def build_directory(self):
|
def build_directory(self):
|
||||||
if self.spec.satisfies("@:18"):
|
if self.spec.satisfies("@:18"):
|
||||||
return "src"
|
return "src"
|
||||||
else:
|
|
||||||
|
if "+openmp" in self.spec:
|
||||||
return "openmp-threading"
|
return "openmp-threading"
|
||||||
|
|
||||||
|
if "+cuda" in self.spec:
|
||||||
|
return "cuda"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def build_targets(self):
|
def build_targets(self):
|
||||||
|
|
||||||
targets = []
|
targets = []
|
||||||
cflags = ""
|
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"):
|
if not self.spec.satisfies("%nvhpc@:20.11"):
|
||||||
cflags = "-std=gnu99"
|
cflags = "-std=gnu99"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue