2024-01-02 16:21:30 +08:00
|
|
|
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
|
2022-05-04 22:09:54 +08:00
|
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
|
|
|
|
|
2022-05-29 00:55:44 +08:00
|
|
|
from spack.package import *
|
|
|
|
|
|
|
|
|
2022-05-04 22:09:54 +08:00
|
|
|
class Chameleon(CMakePackage, CudaPackage):
|
|
|
|
"""Dense Linear Algebra for Scalable Multi-core Architectures and GPGPUs"""
|
2022-07-31 06:19:18 +08:00
|
|
|
|
2022-05-04 22:09:54 +08:00
|
|
|
homepage = "https://gitlab.inria.fr/solverstack/chameleon"
|
2023-07-19 00:57:42 +08:00
|
|
|
url = "https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.2.0/chameleon-1.2.0.tar.gz"
|
2022-05-04 22:09:54 +08:00
|
|
|
git = "https://gitlab.inria.fr/solverstack/chameleon.git"
|
2023-02-02 13:07:25 +08:00
|
|
|
maintainers("fpruvost")
|
2022-05-04 22:09:54 +08:00
|
|
|
|
|
|
|
version("master", branch="master", submodules=True)
|
2023-07-19 00:57:42 +08:00
|
|
|
version("1.2.0", sha256="b8988ecbff19c603ae9f61441653c21bba18d040bee9bb83f7fc9077043e50b4")
|
2023-04-20 05:17:47 +08:00
|
|
|
version("1.1.0", sha256="e64d0438dfaf5effb3740e53f3ab017d12744b85a138b2ef702a81df559126df")
|
2022-05-04 22:09:54 +08:00
|
|
|
|
2024-07-17 22:07:43 +08:00
|
|
|
depends_on("c", type="build") # generated
|
|
|
|
depends_on("cxx", type="build") # generated
|
|
|
|
depends_on("fortran", type="build") # generated
|
|
|
|
|
2022-05-04 22:09:54 +08:00
|
|
|
# cmake's specific
|
|
|
|
variant("shared", default=True, description="Build chameleon as a shared library")
|
|
|
|
|
|
|
|
# chameleon's specific
|
|
|
|
variant(
|
2022-07-31 06:19:18 +08:00
|
|
|
"runtime",
|
2022-05-04 22:09:54 +08:00
|
|
|
default="starpu",
|
|
|
|
description="Runtime support",
|
|
|
|
values=("openmp", "starpu"),
|
|
|
|
multi=False,
|
2022-07-31 06:19:18 +08:00
|
|
|
)
|
2022-05-04 22:09:54 +08:00
|
|
|
variant("mpi", default=True, when="runtime=starpu", description="Enable MPI")
|
|
|
|
variant("cuda", default=False, when="runtime=starpu", description="Enable CUDA")
|
2022-07-31 06:19:18 +08:00
|
|
|
variant(
|
|
|
|
"fxt",
|
2022-05-04 22:09:54 +08:00
|
|
|
default=False,
|
|
|
|
when="runtime=starpu",
|
|
|
|
description="Enable FxT tracing support through StarPU",
|
2022-07-31 06:19:18 +08:00
|
|
|
)
|
|
|
|
variant(
|
2022-05-04 22:09:54 +08:00
|
|
|
"simgrid",
|
|
|
|
default=False,
|
|
|
|
when="runtime=starpu",
|
|
|
|
description="Enable simulation mode through StarPU+SimGrid",
|
|
|
|
)
|
|
|
|
|
|
|
|
# dependencies
|
2022-05-17 04:01:41 +08:00
|
|
|
depends_on("pkgconfig", type="build")
|
2022-05-04 22:09:54 +08:00
|
|
|
|
|
|
|
with when("runtime=starpu"):
|
2023-07-19 00:57:42 +08:00
|
|
|
depends_on("starpu@1.3", when="@1.1.0")
|
2022-05-04 22:09:54 +08:00
|
|
|
depends_on("starpu")
|
|
|
|
depends_on("starpu~mpi", when="~mpi")
|
|
|
|
depends_on("starpu+mpi", when="+mpi")
|
|
|
|
depends_on("starpu~cuda", when="~cuda")
|
|
|
|
depends_on("starpu+cuda", when="+cuda")
|
|
|
|
with when("+simgrid"):
|
2022-10-27 23:59:06 +08:00
|
|
|
depends_on("simgrid+msg")
|
2022-05-04 22:09:54 +08:00
|
|
|
depends_on("starpu+simgrid")
|
|
|
|
depends_on("starpu+mpi~shared+simgrid", when="+mpi")
|
2022-10-27 23:59:06 +08:00
|
|
|
conflicts("^simgrid@:3.31", when="@:1.1.0")
|
|
|
|
conflicts("+shared", when="+simgrid")
|
2022-05-04 22:09:54 +08:00
|
|
|
with when("~simgrid"):
|
|
|
|
depends_on("mpi", when="+mpi")
|
|
|
|
depends_on("cuda", when="+cuda")
|
|
|
|
with when("+fxt"):
|
|
|
|
depends_on("fxt")
|
|
|
|
depends_on("starpu+fxt")
|
|
|
|
|
|
|
|
with when("~simgrid"):
|
|
|
|
depends_on("blas")
|
|
|
|
depends_on("lapack")
|
|
|
|
|
|
|
|
def cmake_args(self):
|
|
|
|
spec = self.spec
|
|
|
|
args = [
|
|
|
|
"-Wno-dev",
|
|
|
|
self.define("CMAKE_COLOR_MAKEFILE", "ON"),
|
|
|
|
self.define("CMAKE_VERBOSE_MAKEFILE", "ON"),
|
|
|
|
self.define("CHAMELEON_ENABLE_EXAMPLE", "ON"),
|
|
|
|
self.define("CHAMELEON_ENABLE_TESTING", "ON"),
|
|
|
|
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
|
|
|
self.define_from_variant("CHAMELEON_USE_MPI", "mpi"),
|
|
|
|
self.define_from_variant("CHAMELEON_USE_CUDA", "cuda"),
|
|
|
|
self.define_from_variant("CHAMELEON_SIMULATION", "simgrid"),
|
|
|
|
]
|
|
|
|
|
|
|
|
if spec.satisfies("runtime=openmp"):
|
|
|
|
args.extend([self.define("CHAMELEON_SCHED", "OPENMP")])
|
|
|
|
if spec.satisfies("runtime=starpu"):
|
|
|
|
args.extend([self.define("CHAMELEON_SCHED", "STARPU")])
|
|
|
|
|
|
|
|
if spec.satisfies("+mpi +simgrid"):
|
|
|
|
args.extend(
|
|
|
|
[
|
2022-10-27 23:59:06 +08:00
|
|
|
self.define("CMAKE_C_COMPILER", self.spec["simgrid"].smpicc),
|
|
|
|
self.define("CMAKE_CXX_COMPILER", self.spec["simgrid"].smpicxx),
|
|
|
|
self.define("CMAKE_Fortran_COMPILER", self.spec["simgrid"].smpifc),
|
2022-05-04 22:09:54 +08:00
|
|
|
]
|
|
|
|
)
|
2022-07-31 06:19:18 +08:00
|
|
|
|
2022-05-04 22:09:54 +08:00
|
|
|
if spec.satisfies("+mpi ~simgrid"):
|
|
|
|
args.extend(
|
|
|
|
[
|
|
|
|
self.define("MPI_C_COMPILER", self.spec["mpi"].mpicc),
|
|
|
|
self.define("MPI_CXX_COMPILER", self.spec["mpi"].mpicxx),
|
|
|
|
self.define("MPI_Fortran_COMPILER", self.spec["mpi"].mpifc),
|
|
|
|
]
|
|
|
|
)
|
2022-07-31 06:19:18 +08:00
|
|
|
|
2022-05-04 22:09:54 +08:00
|
|
|
if spec.satisfies("~simgrid"):
|
2024-08-05 01:59:13 +08:00
|
|
|
if spec.satisfies("^intel-mkl") or spec.satisfies("^intel-parallel-studio+mkl"):
|
|
|
|
if spec.satisfies("threads=none"):
|
2022-05-04 22:09:54 +08:00
|
|
|
args.extend([self.define("BLA_VENDOR", "Intel10_64lp_seq")])
|
|
|
|
else:
|
|
|
|
args.extend([self.define("BLA_VENDOR", "Intel10_64lp")])
|
2024-08-05 01:59:13 +08:00
|
|
|
elif spec.satisfies("^netlib-lapack"):
|
2022-05-04 22:09:54 +08:00
|
|
|
args.extend([self.define("BLA_VENDOR", "Generic")])
|
2024-08-05 01:59:13 +08:00
|
|
|
elif spec.satisfies("^openblas"):
|
2022-05-04 22:09:54 +08:00
|
|
|
args.extend([self.define("BLA_VENDOR", "OpenBLAS")])
|
|
|
|
|
|
|
|
return args
|