spack/var/spack/repos/builtin/packages/yaksa/package.py
2025-01-02 15:40:28 +01:00

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