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:
Pranav Sivaraman 2023-01-10 07:59:30 -05:00 committed by GitHub
parent d2618cd640
commit 006969a8cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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"