68 lines
2.6 KiB
Python
68 lines
2.6 KiB
Python
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class Yaksa(AutotoolsPackage, CudaPackage, ROCmPackage):
|
|
"""Yaksa is a high-performance datatype engine for expressing,
|
|
managing and manipulating data present in noncontiguous memory
|
|
regions. It provides portable abstractions for structured
|
|
noncontiguous data layouts that are much more comprehensive compared
|
|
with traditional I/O vectors.
|
|
|
|
Yaksa imitates parts of the MPI Datatype system, but adds additional
|
|
functionality that would allow it to be used independent of MPI. It
|
|
provides routines for packing/unpacking, creating I/O vectors (array
|
|
of contiguous segments) and flattening/unflattening datatypes into
|
|
process-portable formats.
|
|
|
|
Yaksa's backend includes support for CPUs as well as different
|
|
GPUs."""
|
|
|
|
homepage = "https://www.yaksa.org"
|
|
url = "https://github.com/pmodels/yaksa/archive/refs/tags/v0.2.tar.gz"
|
|
maintainers("raffenet", "yfguo", "hzhou")
|
|
|
|
version("0.3", sha256="c9e5291211bee8852831bb464f430ad5ba1541e31db5718a6fa2f2d3329fc2d9")
|
|
version("0.2", sha256="9401cb6153dc8c34ddb9781bbabd418fd26b0a27b5da3294ecc21af7be9c86f2")
|
|
|
|
variant("level_zero", default=False, description="Enable Level Zero support")
|
|
|
|
depends_on("c", type="build")
|
|
|
|
depends_on("autoconf", type="build")
|
|
depends_on("automake", type="build")
|
|
depends_on("libtool", type="build")
|
|
depends_on("m4", type="build")
|
|
depends_on("python@3:", type="build")
|
|
|
|
def autoreconf(self, spec, prefix):
|
|
sh = which("sh")
|
|
sh("autogen.sh")
|
|
|
|
def configure_args(self):
|
|
spec = self.spec
|
|
config_args = [
|
|
*self.with_or_without("cuda", activation_value="prefix"),
|
|
*self.with_or_without("ze", variant="level_zero"),
|
|
]
|
|
|
|
if "+cuda" in spec:
|
|
cuda_archs = spec.variants["cuda_arch"].value
|
|
if "none" not in cuda_archs:
|
|
config_args.append("--with-cuda-sm={0}".format(",".join(cuda_archs)))
|
|
if "^cuda+allow-unsupported-compilers" in self.spec:
|
|
config_args.append("NVCC_FLAGS=-allow-unsupported-compiler")
|
|
|
|
if "+rocm" in spec:
|
|
config_args.append("--with-hip={0}".format(spec["hip"].prefix))
|
|
rocm_archs = spec.variants["amdgpu_target"].value
|
|
if "none" not in rocm_archs:
|
|
config_args.append("--with-hip-sm={0}".format(",".join(rocm_archs)))
|
|
else:
|
|
config_args.append("--without-hip")
|
|
|
|
return config_args
|