summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorValentin Volkl <valentin.volkl@cern.ch>2021-05-24 09:28:49 +0200
committerGitHub <noreply@github.com>2021-05-24 09:28:49 +0200
commitb6416376db5f8b09b64a25d2818e15127963ac1d (patch)
tree8ac535ff15f5fca2b394f7a5eb27b71f5bcb0e13 /var
parente952aa890ee477ceff4d29416af8812971d586f2 (diff)
downloadspack-b6416376db5f8b09b64a25d2818e15127963ac1d.tar.gz
spack-b6416376db5f8b09b64a25d2818e15127963ac1d.tar.bz2
spack-b6416376db5f8b09b64a25d2818e15127963ac1d.tar.xz
spack-b6416376db5f8b09b64a25d2818e15127963ac1d.zip
alpaka: add new package (#23576)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/alpaka/package.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/alpaka/package.py b/var/spack/repos/builtin/packages/alpaka/package.py
new file mode 100644
index 0000000000..7f26543c05
--- /dev/null
+++ b/var/spack/repos/builtin/packages/alpaka/package.py
@@ -0,0 +1,77 @@
+# Copyright 2013-2021 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)
+
+
+from spack import *
+
+
+class Alpaka(CMakePackage, CudaPackage):
+ """Abstraction Library for Parallel Kernel Acceleration."""
+
+ homepage = "https://alpaka.readthedocs.io"
+ url = "https://github.com/alpaka-group/alpaka/archive/refs/tags/0.6.0.tar.gz"
+ git = "https://github.com/alpaka-group/alpaka.git"
+
+ maintainers = ['vvolkl']
+
+ version('develop', branch='develop')
+ version('0.6.0', sha256='7424ecaee3af15e587b327e983998410fa379c61d987bfe923c7e95d65db11a3')
+ version('0.5.0', sha256='0ba08ea19961dd986160219ba00d6162fe7758980d88a606eff6494d7b3a6cd1')
+ version('0.4.0', sha256='ad7905b13c22abcee4344ba225a65078e3f452ad45a9eda907e7d27c08315e46')
+
+ variant("backend", multi=True, values=('serial', 'threads', 'fiber', 'tbb', 'omp2_gridblock', 'omp2_blockthread', 'omp5', 'oacc', 'cuda', 'cuda_only', 'hip', 'hip_only'), description="Backends to enable", default='serial')
+
+ variant("examples", default=False, description="Build alpaka examples")
+
+ depends_on('boost')
+ depends_on('boost+fiber', when="backend=fiber")
+
+ # make sure no other backend is enabled if using cuda_only or hip_only
+ for v in ('serial', 'threads', 'fiber', 'tbb', 'oacc',
+ 'omp2_gridblock', 'omp2_blockthread', 'omp5', 'cuda', 'hip'):
+ conflicts('backend=cuda_only,%s' % v)
+ conflicts('backend=hip_only,%s' % v)
+ conflicts('backend=cuda_only,hip_only')
+ for v in ('omp2_blockthread', 'omp2_blockthread', 'omp5'):
+ conflicts('backend=oacc,%s' % v)
+
+ # todo: add conflict between cuda 11.3 and gcc 10.3.0
+ # see https://github.com/alpaka-group/alpaka/issues/1297
+
+ def cmake_args(self):
+ spec = self.spec
+ args = []
+ if 'backend=serial' in spec:
+ args.append(self.define("ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLE", True))
+ if 'backend=threads' in self.spec:
+ args.append(self.define("ALPAKA_ACC_CPU_B_SEQ_T_THREADS_ENABLE", True))
+ if 'backend=fiber' in spec:
+ args.append(self.define("ALPAKA_ACC_CPU_B_SEQ_T_FIBERS_ENABLE", True))
+ if 'backend=tbb' in spec:
+ args.append(self.define("ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLE", True))
+ if 'backend=omp2_gridblock' in spec:
+ args.append(self.define("ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLE", True))
+ if 'backend=omp2_blockthread' in spec:
+ args.append(self.define("ALPAKA_ACC_CPU_B_SEQ_T_OMP2_ENABLE", True))
+ if 'backend=omp5' in spec:
+ args.append(self.define("ALPAKA_ACC_ANY_BT_OMP5_ENABLE", True))
+ if 'backend=oacc' in spec:
+ args.append(self.define("ALPAKA_ACC_ANY_BT_OACC_ENABLE", True))
+ if 'backend=cuda' in spec:
+ args.append(self.define("ALPAKA_ACC_GPU_CUDA_ENABLE", True))
+ if 'backend=cuda_only' in spec:
+ args.append(self.define("ALPAKA_ACC_GPU_CUDA_ENABLE", True))
+ args.append(self.define("ALPAKA_ACC_GPU_CUDA_ONLY_MODE", True))
+ if 'backend=hip' in spec:
+ args.append(self.define("ALPAKA_ACC_GPU_HIP_ENABLE", True))
+ if 'backend=hip_only' in spec:
+ args.append(self.define("ALPAKA_ACC_GPU_HIP_ENABLE", True))
+ args.append(self.define("ALPAKA_ACC_GPU_HIP_ONLY_MODE", True))
+
+ args.append(self.define_from_variant("alpaka_BUILD_EXAMPLES",
+ "examples"))
+ # need to define, as it is explicitly declared as an option by alpaka:
+ args.append(self.define("BUILD_TESTING", self.run_tests))
+ return args