summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorfpruvost <florent.pruvost@inria.fr>2022-05-04 16:09:54 +0200
committerGitHub <noreply@github.com>2022-05-04 08:09:54 -0600
commitdc99fe98b941fe1477928a103c16184fa016e31c (patch)
treec955cd160df31d23f1ef2188b9258bb2c4ed70de /var
parentcb97b256464ccd82ad010ab90510856d2c8afbf3 (diff)
downloadspack-dc99fe98b941fe1477928a103c16184fa016e31c.tar.gz
spack-dc99fe98b941fe1477928a103c16184fa016e31c.tar.bz2
spack-dc99fe98b941fe1477928a103c16184fa016e31c.tar.xz
spack-dc99fe98b941fe1477928a103c16184fa016e31c.zip
chameleon: add new package (#30368)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/chameleon/package.py97
1 files changed, 97 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/chameleon/package.py b/var/spack/repos/builtin/packages/chameleon/package.py
new file mode 100644
index 0000000000..2813b5493a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/chameleon/package.py
@@ -0,0 +1,97 @@
+# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+
+class Chameleon(CMakePackage, CudaPackage):
+ """Dense Linear Algebra for Scalable Multi-core Architectures and GPGPUs"""
+ homepage = "https://gitlab.inria.fr/solverstack/chameleon"
+ url = "https://gitlab.inria.fr/solverstack/chameleon/uploads/b299d6037d7636c6be16108c89bc2aab/chameleon-1.1.0.tar.gz"
+ git = "https://gitlab.inria.fr/solverstack/chameleon.git"
+
+ version('master', branch='master', submodules=True)
+ version('1.1.0', 'e64d0438dfaf5effb3740e53f3ab017d12744b85a138b2ef702a81df559126df')
+
+ # cmake's specific
+ variant('shared', default=True, description='Build chameleon as a shared library')
+
+ # chameleon's specific
+ variant(
+ 'runtime', default='starpu', description='Runtime support',
+ values=('openmp', 'starpu'), multi=False
+ )
+ variant('mpi', default=True, when='runtime=starpu', description='Enable MPI')
+ variant('cuda', default=False, when='runtime=starpu', description='Enable CUDA')
+ variant('fxt', default=False, when='runtime=starpu', description='Enable FxT tracing support through StarPU')
+ variant('simgrid', default=False, when='runtime=starpu', description='Enable simulation mode through StarPU+SimGrid')
+
+ # dependencies
+ depends_on("pkg-config", type='build')
+
+ with when("runtime=starpu"):
+ 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"):
+ depends_on("starpu+simgrid")
+ depends_on("starpu+mpi~shared+simgrid", when='+mpi')
+ 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([
+ self.define("MPI_C_COMPILER", self.spec['simgrid'].smpicc),
+ self.define("MPI_CXX_COMPILER", self.spec['simgrid'].smpicxx),
+ self.define("MPI_Fortran_COMPILER", self.spec['simgrid'].smpifc)
+ ])
+
+ 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)
+ ])
+
+ if spec.satisfies('~simgrid'):
+ if ('^intel-mkl' in spec or '^intel-parallel-studio+mkl' in spec):
+ if ('threads=none' in spec):
+ args.extend([self.define("BLA_VENDOR", "Intel10_64lp_seq")])
+ else:
+ args.extend([self.define("BLA_VENDOR", "Intel10_64lp")])
+ elif '^netlib-lapack' in spec:
+ args.extend([self.define("BLA_VENDOR", "Generic")])
+ elif '^openblas' in spec:
+ args.extend([self.define("BLA_VENDOR", "OpenBLAS")])
+
+ return args