summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/arborx/package.py6
-rw-r--r--var/spack/repos/builtin/packages/cabana/package.py6
-rw-r--r--var/spack/repos/builtin/packages/examinimd/package.py2
-rw-r--r--var/spack/repos/builtin/packages/kokkos-kernels-legacy/makefile.patch (renamed from var/spack/repos/builtin/packages/kokkos-kernels/makefile.patch)0
-rw-r--r--var/spack/repos/builtin/packages/kokkos-kernels-legacy/package.py50
-rw-r--r--var/spack/repos/builtin/packages/kokkos-kernels/package.py178
-rw-r--r--var/spack/repos/builtin/packages/kokkos-legacy/package.py229
-rw-r--r--var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py43
-rw-r--r--var/spack/repos/builtin/packages/kokkos/package.py452
-rw-r--r--var/spack/repos/builtin/packages/lammps/package.py2
-rw-r--r--var/spack/repos/builtin/packages/miniaero/package.py2
11 files changed, 698 insertions, 272 deletions
diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py
index 2408dd1a99..dfca8c7aaa 100644
--- a/var/spack/repos/builtin/packages/arborx/package.py
+++ b/var/spack/repos/builtin/packages/arborx/package.py
@@ -28,9 +28,9 @@ class Arborx(CMakePackage):
# ArborX relies on Kokkos to provide devices, thus having one-to-one match
# The only way to disable those devices is to make sure Kokkos does not
# provide them
- depends_on('kokkos@2.7.00:+cuda+enable_lambda cxxstd=c++14', when='+cuda')
- depends_on('kokkos@2.7.00:+openmp cxxstd=c++14', when='+openmp')
- depends_on('kokkos@2.7.00:+serial cxxstd=c++14', when='+serial')
+ depends_on('kokkos-legacy@2.7.00:+cuda+enable_lambda cxxstd=c++14', when='+cuda')
+ depends_on('kokkos-legacy@2.7.00:+openmp cxxstd=c++14', when='+openmp')
+ depends_on('kokkos-legacy@2.7.00:+serial cxxstd=c++14', when='+serial')
def cmake_args(self):
spec = self.spec
diff --git a/var/spack/repos/builtin/packages/cabana/package.py b/var/spack/repos/builtin/packages/cabana/package.py
index 0efff53f92..aaf88e4e12 100644
--- a/var/spack/repos/builtin/packages/cabana/package.py
+++ b/var/spack/repos/builtin/packages/cabana/package.py
@@ -22,9 +22,9 @@ class Cabana(CMakePackage):
variant('cuda', default=False, description="enable Cuda backend")
depends_on("cmake@3.9:", type='build')
- depends_on("kokkos+serial", when="+serial")
- depends_on("kokkos+openmp", when="+openmp")
- depends_on("kokkos+cuda", when="+cuda")
+ depends_on("kokkos-legacy+serial", when="+serial")
+ depends_on("kokkos-legacy+openmp", when="+openmp")
+ depends_on("kokkos-legacy+cuda", when="+cuda")
def cmake_args(self):
options = [
diff --git a/var/spack/repos/builtin/packages/examinimd/package.py b/var/spack/repos/builtin/packages/examinimd/package.py
index a6250b0dcb..f93a33ea01 100644
--- a/var/spack/repos/builtin/packages/examinimd/package.py
+++ b/var/spack/repos/builtin/packages/examinimd/package.py
@@ -34,7 +34,7 @@ class Examinimd(MakefilePackage):
conflicts('+openmp', when='+pthreads')
- depends_on('kokkos')
+ depends_on('kokkos-legacy')
depends_on('mpi', when='+mpi')
@property
diff --git a/var/spack/repos/builtin/packages/kokkos-kernels/makefile.patch b/var/spack/repos/builtin/packages/kokkos-kernels-legacy/makefile.patch
index 639bfd4d58..639bfd4d58 100644
--- a/var/spack/repos/builtin/packages/kokkos-kernels/makefile.patch
+++ b/var/spack/repos/builtin/packages/kokkos-kernels-legacy/makefile.patch
diff --git a/var/spack/repos/builtin/packages/kokkos-kernels-legacy/package.py b/var/spack/repos/builtin/packages/kokkos-kernels-legacy/package.py
new file mode 100644
index 0000000000..8507f90bf4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kokkos-kernels-legacy/package.py
@@ -0,0 +1,50 @@
+# Copyright 2013-2020 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 KokkosKernelsLegacy(MakefilePackage):
+ """Kokkos C++ Performance Portability Programming EcoSystem: Math Kernels -
+ Provides BLAS, Sparse BLAS and Graph Kernels."""
+
+ homepage = "https://github.com/kokkos/kokkos-kernels"
+ url = "https://github.com/kokkos/kokkos-kernels/archive/2.7.00.tar.gz"
+
+ version('2.7.00', sha256='adf4af44eadbdfbeb9ec69dd5fae4e2852bd1fbe4a69213efd199e49f4098254')
+ version('2.6.00', sha256='14ebf806f66b9ca73949a478b8d959be7fa1165a640935760a724d7cc0a66335')
+ version('2.5.00', sha256='2c2289da3a41dafd97726e90507debafbb9f5e49ca5b0f5c8d1e044a5796f000')
+
+ # make sure kokkos kernels version matches kokkos
+ depends_on('kokkos-legacy@2.5.00', when='@2.5.00')
+ depends_on('kokkos-legacy@2.6.00', when='@2.6.00')
+ depends_on('kokkos-legacy@2.7.00', when='@2.7.00')
+
+ patch('makefile.patch')
+
+ def edit(self, spec, prefix):
+ makefile = FileFilter("src/Makefile")
+ makefile.filter('CXX = .*', 'CXX = ' + env['CXX'])
+
+ def build(self, spec, prefix):
+ with working_dir('build', create=True):
+ makefile_path = '%s%s' % (self.stage.source_path, '/src/Makefile')
+ copy(makefile_path, 'Makefile')
+ make_args = [
+ 'KOKKOSKERNELS_INSTALL_PATH=%s' % prefix,
+ 'KOKKOSKERNELS_PATH=%s' % self.stage.source_path,
+ 'KOKKOS_PATH=%s' % spec['kokkos'].prefix
+ ]
+
+ make('build', *make_args)
+
+ def install(self, spec, prefix):
+ with working_dir('build', create=False):
+ make_args = [
+ 'KOKKOSKERNELS_INSTALL_PATH=%s' % prefix,
+ 'KOKKOSKERNELS_PATH=%s' % self.stage.source_path,
+ 'KOKKOS_PATH=%s' % spec['kokkos'].prefix
+ ]
+ make('install', *make_args)
diff --git a/var/spack/repos/builtin/packages/kokkos-kernels/package.py b/var/spack/repos/builtin/packages/kokkos-kernels/package.py
index 614fa54196..8cd68051df 100644
--- a/var/spack/repos/builtin/packages/kokkos-kernels/package.py
+++ b/var/spack/repos/builtin/packages/kokkos-kernels/package.py
@@ -2,52 +2,142 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
from spack import *
-class KokkosKernels(MakefilePackage):
- """Kokkos C++ Performance Portability Programming EcoSystem: Math Kernels -
- Provides BLAS, Sparse BLAS and Graph Kernels."""
+class KokkosKernels(CMakePackage, CudaPackage):
+ """Kokkos Kernels provides math kernels, often BLAS or LAPACK
+ for small matrices, that can be used in larger Kokkos parallel routines"""
homepage = "https://github.com/kokkos/kokkos-kernels"
- url = "https://github.com/kokkos/kokkos-kernels/archive/2.7.00.tar.gz"
-
- version('2.7.00', sha256='adf4af44eadbdfbeb9ec69dd5fae4e2852bd1fbe4a69213efd199e49f4098254')
- version('2.6.00', sha256='14ebf806f66b9ca73949a478b8d959be7fa1165a640935760a724d7cc0a66335')
- version('2.5.00', sha256='2c2289da3a41dafd97726e90507debafbb9f5e49ca5b0f5c8d1e044a5796f000')
- version('develop', git='https://github.com/kokkos/kokkos-kernels',
- branch='develop')
-
- # make sure kokkos kernels version matches kokkos
- depends_on('kokkos@2.5.00', when='@2.5.00')
- depends_on('kokkos@2.6.00', when='@2.6.00')
- depends_on('kokkos@2.7.00', when='@2.7.00')
- depends_on('kokkos@develop', when='@develop')
-
- patch('makefile.patch')
-
- def edit(self, spec, prefix):
- makefile = FileFilter("src/Makefile")
- makefile.filter('CXX = .*', 'CXX = ' + env['CXX'])
-
- def build(self, spec, prefix):
- with working_dir('build', create=True):
- makefile_path = '%s%s' % (self.stage.source_path, '/src/Makefile')
- copy(makefile_path, 'Makefile')
- make_args = [
- 'KOKKOSKERNELS_INSTALL_PATH=%s' % prefix,
- 'KOKKOSKERNELS_PATH=%s' % self.stage.source_path,
- 'KOKKOS_PATH=%s' % spec['kokkos'].prefix
- ]
-
- make('build', *make_args)
-
- def install(self, spec, prefix):
- with working_dir('build', create=False):
- make_args = [
- 'KOKKOSKERNELS_INSTALL_PATH=%s' % prefix,
- 'KOKKOSKERNELS_PATH=%s' % self.stage.source_path,
- 'KOKKOS_PATH=%s' % spec['kokkos'].prefix
- ]
- make('install', *make_args)
+ git = "https://github.com/kokkos/kokkos-kernels.git"
+
+ version('3.1', url='https://github.com/kokkos/kokkos-kernels/archive/3.1.00.tar.gz',
+ sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89",
+ default=True)
+ version('3.0', url='https://github.com/kokkos/kokkos-kernels/archive/3.0.00.tar.gz',
+ sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6")
+ version('develop', branch='develop')
+ version('master', branch='master')
+
+ depends_on("kokkos")
+ depends_on("kokkos@develop", when="@develop")
+ depends_on("cmake@3.10:", type='build')
+
+ backends = {
+ 'serial': (False, "enable Serial backend (default)"),
+ 'cuda': (False, "enable Cuda backend"),
+ 'openmp': (False, "enable OpenMP backend"),
+ }
+
+ for backend in backends:
+ deflt, descr = backends[backend]
+ variant(backend.lower(), default=deflt, description=descr)
+ depends_on("kokkos+%s" % backend.lower(), when="+%s" % backend.lower())
+
+ space_etis = {
+ "execspace_cuda": ('auto', "", "cuda"),
+ "execspace_openmp": ('auto', "", "openmp"),
+ "execspace_threads": ('auto', "", "pthread"),
+ "execspace_serial": ('auto', "", "serial"),
+ "memspace_cudauvmspace": ('auto', "", "cuda"),
+ "memspace_cudaspace": ('auto', "", "cuda"),
+ }
+ for eti in space_etis:
+ deflt, descr, backend_required = space_etis[eti]
+ variant(eti, default=deflt, description=descr)
+ depends_on("kokkos+%s" % backend_required, when="+%s" % eti)
+
+ numeric_etis = {
+ "ordinals": ("int", "ORDINAL_", # default, cmake name
+ ["int", "int64_t"]), # allowed values
+ "offsets": ("int,size_t", "OFFSET_",
+ ["int", "size_t"]),
+ "layouts": ("left", "LAYOUT",
+ ["left", "right"]),
+ "scalars": ("double", "",
+ ["float", "double", "complex_float", "complex_double"])
+ }
+ for eti in numeric_etis:
+ deflt, cmake_name, vals = numeric_etis[eti]
+ variant(eti, default=deflt, values=vals, multi=True)
+
+ tpls = {
+ # variant name #deflt #spack name #root var name #docstring
+ "blas": (False, "blas", "BLAS", "Link to system BLAS"),
+ "lapack": (False, "lapack", "LAPACK", "Link to system LAPACK"),
+ "mkl": (False, "mkl", "MKL", "Link to system MKL"),
+ "cublas": (False, "cuda", None, "Link to CUDA BLAS library"),
+ "cusparse": (False, "cuda", None, "Link to CUDA sparse library"),
+ "superlu": (False, "superlu", "SUPERLU", "Link to SuperLU library"),
+ "cblas": (False, "cblas", "CBLAS", "Link to CBLAS library"),
+ "lapacke": (False, "clapack", "LAPACKE", "Link to LAPACKE library"),
+ }
+
+ for tpl in tpls:
+ deflt, spackname, rootname, descr = tpls[tpl]
+ variant(tpl, default=deflt, description=descr)
+ depends_on(spackname, when="+%s" % tpl)
+
+ def cmake_args(self):
+ spec = self.spec
+ options = []
+
+ isdiy = "+diy" in spec
+ if isdiy:
+ options.append("-DSpack_WORKAROUND=On")
+
+ options.append("-DKokkos_ROOT=%s" % spec["kokkos"].prefix)
+ # Compiler weirdness due to nvcc_wrapper
+ options.append("-DCMAKE_CXX_COMPILER=%s" % spec["kokkos"].kokkos_cxx)
+
+ if self.run_tests:
+ options.append("-DKokkosKernels_ENABLE_TESTS=ON")
+
+ for tpl in self.tpls:
+ on_flag = "+%s" % tpl
+ off_flag = "~%s" % tpl
+ dflt, spackname, rootname, descr = self.tpls[tpl]
+ if on_flag in self.spec:
+ options.append("-DKokkosKernels_ENABLE_TPL_%s=ON" %
+ tpl.upper())
+ if rootname:
+ options.append("-D%s_ROOT=%s" %
+ (rootname, spec[spackname].prefix))
+ else:
+ pass # this should get picked up automatically, we hope
+ elif off_flag in self.spec:
+ options.append(
+ "-DKokkosKernels_ENABLE_TPL_%s=OFF" % tpl.upper())
+
+ for eti in self.numeric_etis:
+ deflt, cmake_name, vals = self.numeric_etis[eti]
+ for val in vals:
+ keyval = "%s=%s" % (eti, val)
+ cmake_option = "KokkosKernels_INST_%s%s" % (
+ cmake_name.upper(), val.upper())
+ if keyval in spec:
+ options.append("-D%s=ON" % cmake_option)
+ else:
+ options.append("-D%s=OFF" % cmake_option)
+
+ for eti in self.space_etis:
+ deflt, descr = self.space_etis[eti]
+ if deflt == "auto":
+ value = spec.variants[eti].value
+ # spack does these as strings, not reg booleans
+ if str(value) == "True":
+ options.append("-DKokkosKernels_INST_%s=ON" % eti.upper())
+ elif str(value) == "False":
+ options.append("-DKokkosKernels_INST_%s=OFF" % eti.upper())
+ else:
+ pass # don't pass anything, let CMake decide
+ else: # simple option
+ on_flag = "+%s" % eti
+ off_flag = "~%s" % eti
+ if on_flag in self.spec:
+ options.append("-DKokkosKernels_INST_%s=ON" % eti.upper())
+ elif off_flag in self.spec:
+ options.append("-DKokkosKernels_INST_%s=OFF" % eti.upper())
+
+ return options
diff --git a/var/spack/repos/builtin/packages/kokkos-legacy/package.py b/var/spack/repos/builtin/packages/kokkos-legacy/package.py
new file mode 100644
index 0000000000..2adfa0c9b5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kokkos-legacy/package.py
@@ -0,0 +1,229 @@
+# Copyright 2013-2020 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 KokkosLegacy(Package):
+ """Kokkos implements a programming model in C++ for writing performance
+ portable applications targeting all major HPC platforms."""
+
+ homepage = "https://github.com/kokkos/kokkos"
+ url = "https://github.com/kokkos/kokkos/archive/2.03.00.tar.gz"
+ git = "https://github.com/kokkos/kokkos.git"
+
+ version('2.9.00', sha256='e0621197791ed3a381b4f02c78fa529f3cff3abb74d52157b4add17e8aa04bc4')
+ version('2.8.00', sha256='1c72661f2d770517bff98837001b42b9c677d1df29f7493a1d7c008549aff630')
+ version('2.7.24', sha256='a308a80ea1488f4c18884b828ce7ae9f5210b9a6b2f61b208d875084d8da8cb0')
+ version('2.7.00', sha256='01595996e612ef7410aa42fa265a23101cfe1b6993fa9810ca844db5c89ad765')
+ version('2.5.00', sha256='ea232594bf746abb99ae2aafaeef5d07adc089968010a62a88aaa892106d9476')
+ version('2.04.11', sha256='f2680aee0169f6cbbec38410f9c80bf8a160435f6a07769c1e9112da8b9349a0')
+ version('2.04.04', sha256='5bac8ddc2fac9bc6e01dd40f92ca6cbbb346a25deca5be2fec71acf712d0d0c7')
+ version('2.04.00', sha256='b04658d368986df207662a7a37c1ad974c321447bc2c2b5b696d7e9ee4481f34')
+ version('2.03.13', sha256='002748bdd0319d5ab82606cf92dc210fc1c05d0607a2e1d5538f60512b029056')
+ version('2.03.05', sha256='b18ddaa1496130ff3f675ea9ddbc6df9cdf378d53edf96df89e70ff189e10e1d')
+ version('2.03.00', sha256='722bea558d8986efee765ac912febb3c1ce289a8e9bdfef77cd0145df0ea8a3d')
+ version('2.02.15', sha256='6b4a7f189f0341f378f950f3c798f520d2e473b13435b137ff3b666e799a076d')
+ version('2.02.07', sha256='7b4ac81021d6868f4eb8e2a1cb92ba76bad9c3f197403b8b1eac0f11c983247c')
+
+ variant('debug', default=False, description="Build debug version of Kokkos")
+
+ variant('serial', default=True, description="enable Serial backend (default)")
+ variant('pthreads', default=False, description="enable Pthreads backend")
+ variant('qthreads', default=False, description="enable Qthreads backend")
+ variant('cuda', default=False, description="enable Cuda backend")
+ variant('openmp', default=False, description="enable OpenMP backend")
+
+ # Compilation options
+ variant('pic', default=False,
+ description="enable position independent code (-fPIC flag)")
+
+ # Kokkos options
+ variant('aggressive_vectorization', default=False,
+ description="set aggressive_vectorization Kokkos option")
+ variant('disable_profiling', default=False,
+ description="set disable_profiling Kokkos option")
+ variant('disable_dualview_modify_check', default=False,
+ description="set disable_dualview_modify_check Kokkos option")
+ variant('enable_profile_load_print', default=False,
+ description="set enable_profile_load_print Kokkos option")
+ variant('compiler_warnings', default=False,
+ description="set compiler_warnings Kokkos option")
+ variant('disable_deprecated_code', default=False,
+ description="set disable_deprecated_code Kokkos option")
+ variant('enable_eti', default=False,
+ description="set enable_eti Kokkos option")
+
+ # CUDA options
+ variant('force_uvm', default=False,
+ description="set force_uvm Kokkos CUDA option")
+ variant('use_ldg', default=False,
+ description="set use_ldg Kokkos CUDA option")
+ variant('rdc', default=False,
+ description="set rdc Kokkos CUDA option")
+ variant('enable_lambda', default=False,
+ description="set enable_lambda Kokkos CUDA option")
+
+ host_values = ('AMDAVX', 'ARMv80', 'ARMv81', 'ARMv8-ThunderX',
+ 'Power7', 'Power8', 'Power9',
+ 'WSM', 'SNB', 'HSW', 'BDW', 'SKX',
+ 'KNC', 'KNL')
+
+ gpu_values = ('Kepler30', 'Kepler32', 'Kepler35', 'Kepler37',
+ 'Maxwell50', 'Maxwell52', 'Maxwell53',
+ 'Pascal60', 'Pascal61',
+ 'Volta70', 'Volta72')
+
+ # C++ standard variant
+ variant('cxxstd', default='none',
+ values=('c++11', 'c++14', 'c++17', 'c++1y', 'c++1z', 'c++2a'),
+ multi=False,
+ description='set cxxstandard Kokkos option')
+
+ # Host architecture variant
+ variant(
+ 'host_arch',
+ default='none',
+ values=host_values,
+ description='Set the host architecture to use'
+ )
+
+ # GPU architecture variant
+ variant(
+ 'gpu_arch',
+ default='none',
+ values=gpu_values,
+ description='Set the GPU architecture to use'
+ )
+
+ # Checks on Kokkos version and Kokkos options
+ conflicts('+aggressive_vectorization', when='@:2.0.99',)
+ conflicts('+disable_profiling', when='@:2.0.99',)
+ conflicts('+disable_dualview_modify_check', when='@:2.03.04',)
+ conflicts('+enable_profile_load_print', when='@:2.03.04',)
+ conflicts('+compiler_warnings', when='@:2.03.14',)
+ conflicts('+disable_deprecated_code', when='@:2.5.99',)
+ conflicts('+enable_eti', when='@:2.6.99',)
+
+ # Check that we haven't specified a gpu architecture
+ # without specifying CUDA
+ for p in gpu_values:
+ conflicts('gpu_arch={0}'.format(p), when='~cuda',
+ msg='Must specify CUDA backend to use a GPU architecture.')
+
+ # Check that we haven't specified a Kokkos CUDA option
+ # without specifying CUDA
+ conflicts('+force_uvm', when='~cuda',
+ msg='Must enable CUDA to use force_uvm.')
+ conflicts('+use_ldg', when='~cuda',
+ msg='Must enable CUDA to use use_ldg.')
+ conflicts('+rdc', when='~cuda',
+ msg='Must enable CUDA to use rdc.')
+ conflicts('+enable_lambda', when='~cuda',
+ msg='Must enable CUDA to use enable_lambda.')
+
+ # Check that we haven't asked for a GPU architecture that
+ # the revision of kokkos does not support
+ conflicts('gpu_arch=Volta70', when='@:2.5.99')
+ conflicts('gpu_arch=Volta72', when='@:2.5.99')
+
+ # conflicts on kokkos version and cuda enabled
+ # see kokkos issue #1296
+ # https://github.com/kokkos/kokkos/issues/1296
+ conflicts('+cuda', when='@2.5.00:2.7.00',
+ msg='Kokkos build system has issue (#1296) when CUDA enabled'
+ ' in version 2.5.00 through 2.7.00.')
+
+ # Specify that v1.x is required as v2.x has API changes
+ depends_on('hwloc@:1')
+ depends_on('qthreads', when='+qthreads')
+ depends_on('cuda', when='+cuda')
+
+ # generate_makefile.bash calls cmake
+ depends_on('cmake@3.10:', type='build')
+
+ def install(self, spec, prefix):
+ generate = which(join_path(self.stage.source_path,
+ 'generate_makefile.bash'))
+ with working_dir('build', create=True):
+ g_args = [
+ '--prefix=%s' % prefix,
+ '--with-hwloc=%s' % spec['hwloc'].prefix,
+ ]
+ arch_args = []
+ kokkos_options_args = []
+ cuda_options_args = []
+
+ # PIC
+ if '+pic' in spec:
+ g_args.append('--cxxflags=-fPIC')
+
+ # C++ standard
+ cxxstandard = spec.variants['cxxstd'].value
+ if cxxstandard != 'none':
+ g_args.append('--cxxstandard=%s' % cxxstandard)
+
+ # Build Debug
+ if '+debug' in spec:
+ g_args.append('--debug')
+
+ # Backends
+ if '+serial' in spec:
+ g_args.append('--with-serial')
+ if '+openmp' in spec:
+ g_args.append('--with-openmp')
+ if '+pthreads' in spec:
+ g_args.append('--with-pthread')
+ if '+qthreads' in spec:
+ g_args.append('--with-qthreads=%s' % spec['qthreads'].prefix)
+ if '+cuda' in spec:
+ g_args.append('--with-cuda=%s' % spec['cuda'].prefix)
+ # Host architectures
+ host_arch = spec.variants['host_arch'].value
+ # GPU architectures
+ gpu_arch = spec.variants['gpu_arch'].value
+ if host_arch != 'none':
+ arch_args.append(host_arch)
+ if gpu_arch != 'none':
+ arch_args.append(gpu_arch)
+ # Combined architecture flags
+ if arch_args:
+ g_args.append('--arch={0}'.format(','.join(arch_args)))
+
+ # CUDA options
+ if '+force_uvm' in spec:
+ cuda_options_args.append('force_uvm')
+ if '+use_ldg' in spec:
+ cuda_options_args.append('use_ldg')
+ if '+rdc' in spec:
+ cuda_options_args.append('rdc')
+ if '+enable_lambda' in spec:
+ cuda_options_args.append('enable_lambda')
+ if cuda_options_args:
+ g_args.append('--with-cuda-options={0}'
+ .format(','.join(cuda_options_args)))
+
+ # Kokkos options
+ if '+aggressive_vectorization' in spec:
+ kokkos_options_args.append('aggressive_vectorization')
+ if '+disable_profiling' in spec:
+ kokkos_options_args.append('disable_profiling')
+ if '+disable_dualview_modify_check' in spec:
+ kokkos_options_args.append('disable_dualview_modify_check')
+ if '+enable_profile_load_print' in spec:
+ kokkos_options_args.append('enable_profile_load_print')
+ if '+compiler_warnings' in spec:
+ kokkos_options_args.append('compiler_warnings')
+ if '+disable_deprecated_code' in spec:
+ kokkos_options_args.append('disable_deprecated_code')
+ if '+enable_eti' in spec:
+ kokkos_options_args.append('enable_eti')
+ if kokkos_options_args:
+ g_args.append('--with-options={0}'
+ .format(','.join(kokkos_options_args)))
+
+ generate(*g_args)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py b/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py
new file mode 100644
index 0000000000..8bb09f2759
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py
@@ -0,0 +1,43 @@
+# Copyright 2013-2020 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 *
+import os
+
+
+class KokkosNvccWrapper(CMakePackage):
+ """The NVCC wrapper provides a wrapper around NVCC to make it a
+ 'full' C++ compiler that accepts all flags"""
+
+ homepage = "https://github.com/kokkos/kokkos"
+ git = "https://github.com/kokkos/nvcc_wrapper.git"
+
+ version('3.1', url='https://github.com/kokkos/nvcc_wrapper/archive/3.1.tar.gz',
+ sha256="5171530763bb2845aa70651f3a8e5dc95b6eed76379323fde3205f97ed28ec8c",
+ default=True)
+ version('master', branch='master')
+
+ variant("mpi", default=True,
+ description="use with MPI as the underlying compiler")
+ depends_on("cuda")
+ depends_on("mpi", when="+mpi")
+ depends_on("cmake@3.10:", type='build')
+
+ def cmake_args(self):
+ options = [
+ "-DCMAKE_CXX_COMPILER=%s" % os.environ["SPACK_CXX"],
+ "-DCMAKE_CUDA_HOST_COMPILER=%s" % os.environ["SPACK_CXX"],
+ "-DCMAKE_C_COMPILER=%s" % os.environ["SPACK_CC"],
+ ]
+ return options
+
+ def setup_dependent_build_environment(self, env, dependent_spec):
+ wrapper = join_path(self.prefix.bin, "nvcc_wrapper")
+ env.set('MPICH_CXX', wrapper)
+ env.set('OMPI_CXX', wrapper)
+ env.set('KOKKOS_CXX', spack_cxx)
+
+ def setup_dependent_package(self, module, dependent_spec):
+ wrapper = join_path(self.prefix.bin, "nvcc_wrapper")
+ self.spec.kokkos_cxx = wrapper
diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py
index 47dae741ba..eb1f0610da 100644
--- a/var/spack/repos/builtin/packages/kokkos/package.py
+++ b/var/spack/repos/builtin/packages/kokkos/package.py
@@ -2,231 +2,245 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
from spack import *
-class Kokkos(Package):
+class Kokkos(CMakePackage, CudaPackage):
"""Kokkos implements a programming model in C++ for writing performance
portable applications targeting all major HPC platforms."""
homepage = "https://github.com/kokkos/kokkos"
- url = "https://github.com/kokkos/kokkos/archive/2.03.00.tar.gz"
- git = "https://github.com/kokkos/kokkos.git"
+ git = "https://github.com/kokkos/kokkos.git"
version('develop', branch='develop')
- version('3.1.00', sha256='b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878')
- version('3.0.00', sha256='c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b')
- version('2.9.00', sha256='e0621197791ed3a381b4f02c78fa529f3cff3abb74d52157b4add17e8aa04bc4')
- version('2.8.00', sha256='1c72661f2d770517bff98837001b42b9c677d1df29f7493a1d7c008549aff630')
- version('2.7.24', sha256='a308a80ea1488f4c18884b828ce7ae9f5210b9a6b2f61b208d875084d8da8cb0')
- version('2.7.00', sha256='01595996e612ef7410aa42fa265a23101cfe1b6993fa9810ca844db5c89ad765')
- version('2.5.00', sha256='ea232594bf746abb99ae2aafaeef5d07adc089968010a62a88aaa892106d9476')
- version('2.04.11', sha256='f2680aee0169f6cbbec38410f9c80bf8a160435f6a07769c1e9112da8b9349a0')
- version('2.04.04', sha256='5bac8ddc2fac9bc6e01dd40f92ca6cbbb346a25deca5be2fec71acf712d0d0c7')
- version('2.04.00', sha256='b04658d368986df207662a7a37c1ad974c321447bc2c2b5b696d7e9ee4481f34')
- version('2.03.13', sha256='002748bdd0319d5ab82606cf92dc210fc1c05d0607a2e1d5538f60512b029056')
- version('2.03.05', sha256='b18ddaa1496130ff3f675ea9ddbc6df9cdf378d53edf96df89e70ff189e10e1d')
- version('2.03.00', sha256='722bea558d8986efee765ac912febb3c1ce289a8e9bdfef77cd0145df0ea8a3d')
- version('2.02.15', sha256='6b4a7f189f0341f378f950f3c798f520d2e473b13435b137ff3b666e799a076d')
- version('2.02.07', sha256='7b4ac81021d6868f4eb8e2a1cb92ba76bad9c3f197403b8b1eac0f11c983247c')
-
- variant('debug', default=False, description="Build debug version of Kokkos")
-
- variant('serial', default=True, description="enable Serial backend (default)")
- variant('pthreads', default=False, description="enable Pthreads backend")
- variant('qthreads', default=False, description="enable Qthreads backend")
- variant('cuda', default=False, description="enable Cuda backend")
- variant('openmp', default=False, description="enable OpenMP backend")
-
- # Compilation options
- variant('pic', default=False,
- description="enable position independent code (-fPIC flag)")
-
- # Kokkos options
- variant('aggressive_vectorization', default=False,
- description="set aggressive_vectorization Kokkos option")
- variant('disable_profiling', default=False,
- description="set disable_profiling Kokkos option")
- variant('disable_dualview_modify_check', default=False,
- description="set disable_dualview_modify_check Kokkos option")
- variant('enable_profile_load_print', default=False,
- description="set enable_profile_load_print Kokkos option")
- variant('compiler_warnings', default=False,
- description="set compiler_warnings Kokkos option")
- variant('disable_deprecated_code', default=False,
- description="set disable_deprecated_code Kokkos option")
- variant('enable_eti', default=False,
- description="set enable_eti Kokkos option")
-
- # CUDA options
- variant('force_uvm', default=False,
- description="set force_uvm Kokkos CUDA option")
- variant('use_ldg', default=False,
- description="set use_ldg Kokkos CUDA option")
- variant('rdc', default=False,
- description="set rdc Kokkos CUDA option")
- variant('enable_lambda', default=False,
- description="set enable_lambda Kokkos CUDA option")
-
- host_values = ('AMDAVX', 'ARMv80', 'ARMv81', 'ARMv8-ThunderX',
- 'Power7', 'Power8', 'Power9',
- 'WSM', 'SNB', 'HSW', 'BDW', 'SKX',
- 'KNC', 'KNL')
-
- gpu_values = ('Kepler30', 'Kepler32', 'Kepler35', 'Kepler37',
- 'Maxwell50', 'Maxwell52', 'Maxwell53',
- 'Pascal60', 'Pascal61',
- 'Volta70', 'Volta72')
-
- # C++ standard variant
- variant('cxxstd', default='none',
- values=('c++11', 'c++14', 'c++17', 'c++1y', 'c++1z', 'c++2a'),
- multi=False,
- description='set cxxstandard Kokkos option')
-
- # Host architecture variant
- variant(
- 'host_arch',
- default='none',
- values=host_values,
- description='Set the host architecture to use'
- )
-
- # GPU architecture variant
- variant(
- 'gpu_arch',
- default='none',
- values=gpu_values,
- description='Set the GPU architecture to use'
- )
-
- # Checks on Kokkos version and Kokkos options
- conflicts('+aggressive_vectorization', when='@:2.0.99',)
- conflicts('+disable_profiling', when='@:2.0.99',)
- conflicts('+disable_dualview_modify_check', when='@:2.03.04',)
- conflicts('+enable_profile_load_print', when='@:2.03.04',)
- conflicts('+compiler_warnings', when='@:2.03.14',)
- conflicts('+disable_deprecated_code', when='@:2.5.99',)
- conflicts('+enable_eti', when='@:2.6.99',)
-
- # Check that we haven't specified a gpu architecture
- # without specifying CUDA
- for p in gpu_values:
- conflicts('gpu_arch={0}'.format(p), when='~cuda',
- msg='Must specify CUDA backend to use a GPU architecture.')
-
- # Check that we haven't specified a Kokkos CUDA option
- # without specifying CUDA
- conflicts('+force_uvm', when='~cuda',
- msg='Must enable CUDA to use force_uvm.')
- conflicts('+use_ldg', when='~cuda',
- msg='Must enable CUDA to use use_ldg.')
- conflicts('+rdc', when='~cuda',
- msg='Must enable CUDA to use rdc.')
- conflicts('+enable_lambda', when='~cuda',
- msg='Must enable CUDA to use enable_lambda.')
-
- # Check that we haven't asked for a GPU architecture that
- # the revision of kokkos does not support
- conflicts('gpu_arch=Volta70', when='@:2.5.99')
- conflicts('gpu_arch=Volta72', when='@:2.5.99')
-
- # conflicts on kokkos version and cuda enabled
- # see kokkos issue #1296
- # https://github.com/kokkos/kokkos/issues/1296
- conflicts('+cuda', when='@2.5.00:2.7.00',
- msg='Kokkos build system has issue (#1296) when CUDA enabled'
- ' in version 2.5.00 through 2.7.00.')
-
- # Specify that v1.x is required as v2.x has API changes
- depends_on('hwloc@:1')
- depends_on('qthreads', when='+qthreads')
- depends_on('cuda', when='+cuda')
-
- # generate_makefile.bash calls cmake
- depends_on('cmake@3.10:', type='build')
-
- def install(self, spec, prefix):
- generate = which(join_path(self.stage.source_path,
- 'generate_makefile.bash'))
- with working_dir('build', create=True):
- g_args = [
- '--prefix=%s' % prefix,
- '--with-hwloc=%s' % spec['hwloc'].prefix,
- ]
- arch_args = []
- kokkos_options_args = []
- cuda_options_args = []
-
- # PIC
- if '+pic' in spec:
- g_args.append('--cxxflags=-fPIC')
-
- # C++ standard
- cxxstandard = spec.variants['cxxstd'].value
- if cxxstandard != 'none':
- g_args.append('--cxxstandard=%s' % cxxstandard)
-
- # Build Debug
- if '+debug' in spec:
- g_args.append('--debug')
-
- # Backends
- if '+serial' in spec:
- g_args.append('--with-serial')
- if '+openmp' in spec:
- g_args.append('--with-openmp')
- if '+pthreads' in spec:
- g_args.append('--with-pthread')
- if '+qthreads' in spec:
- g_args.append('--with-qthreads=%s' % spec['qthreads'].prefix)
- if '+cuda' in spec:
- g_args.append('--with-cuda=%s' % spec['cuda'].prefix)
- # Host architectures
- host_arch = spec.variants['host_arch'].value
- # GPU architectures
- gpu_arch = spec.variants['gpu_arch'].value
- if host_arch != 'none':
- arch_args.append(host_arch)
- if gpu_arch != 'none':
- arch_args.append(gpu_arch)
- # Combined architecture flags
- if arch_args:
- g_args.append('--arch={0}'.format(','.join(arch_args)))
-
- # CUDA options
- if '+force_uvm' in spec:
- cuda_options_args.append('force_uvm')
- if '+use_ldg' in spec:
- cuda_options_args.append('use_ldg')
- if '+rdc' in spec:
- cuda_options_args.append('rdc')
- if '+enable_lambda' in spec:
- cuda_options_args.append('enable_lambda')
- if cuda_options_args:
- g_args.append('--with-cuda-options={0}'
- .format(','.join(cuda_options_args)))
-
- # Kokkos options
- if '+aggressive_vectorization' in spec:
- kokkos_options_args.append('aggressive_vectorization')
- if '+disable_profiling' in spec:
- kokkos_options_args.append('disable_profiling')
- if '+disable_dualview_modify_check' in spec:
- kokkos_options_args.append('disable_dualview_modify_check')
- if '+enable_profile_load_print' in spec:
- kokkos_options_args.append('enable_profile_load_print')
- if '+compiler_warnings' in spec:
- kokkos_options_args.append('compiler_warnings')
- if '+disable_deprecated_code' in spec:
- kokkos_options_args.append('disable_deprecated_code')
- if '+enable_eti' in spec:
- kokkos_options_args.append('enable_eti')
- if kokkos_options_args:
- g_args.append('--with-options={0}'
- .format(','.join(kokkos_options_args)))
-
- generate(*g_args)
- make()
- make('install')
+ version('master', branch='master')
+ version('3.0', url="https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz",
+ sha256="c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b")
+ version('3.1', url="https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz",
+ sha256="b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878",
+ default=True)
+
+ depends_on("cmake@3.10:", type='build')
+
+ devices_variants = {
+ 'cuda': [False, 'Whether to build CUDA backend'],
+ 'openmp': [False, 'Whether to build OpenMP backend'],
+ 'pthread': [False, 'Whether to build Pthread backend'],
+ 'serial': [True, 'Whether to build serial backend'],
+ 'hip': [False, 'Whether to build HIP backend'],
+ }
+ conflicts("+hip", when="@:3.0")
+
+ tpls_variants = {
+ 'hpx': [False, 'Whether to enable the HPX library'],
+ 'hwloc': [False, 'Whether to enable the HWLOC library'],
+ 'numactl': [False, 'Whether to enable the LIBNUMA library'],
+ 'memkind': [False, 'Whether to enable the MEMKIND library'],
+ }
+
+ options_variants = {
+ 'aggressive_vectorization': [False,
+ 'Aggressively vectorize loops'],
+ 'compiler_warnings': [False,
+ 'Print all compiler warnings'],
+ 'cuda_lambda': [False,
+ 'Activate experimental lambda features'],
+ 'cuda_ldg_intrinsic': [False,
+ 'Use CUDA LDG intrinsics'],
+ 'cuda_relocatable_device_code': [False,
+ 'Enable RDC for CUDA'],
+ 'cuda_uvm': [False,
+ 'Enable unified virtual memory (UVM) for CUDA'],
+ 'debug': [False,
+ 'Activate extra debug features - may increase compiletimes'],
+ 'debug_bounds_check': [False,
+ 'Use bounds checking - will increase runtime'],
+ 'debug_dualview_modify_check': [False, 'Debug check on dual views'],
+ 'deprecated_code': [False, 'Whether to enable deprecated code'],
+ 'examples': [False, 'Whether to build OpenMP backend'],
+ 'explicit_instantiation': [False,
+ 'Explicitly instantiate template types'],
+ 'hpx_async_dispatch': [False,
+ 'Whether HPX supports asynchronous dispath'],
+ 'profiling': [True,
+ 'Create bindings for profiling tools'],
+ 'profiling_load_print': [False,
+ 'Print which profiling tools got loaded'],
+ 'qthread': [False, 'Eenable the QTHREAD library'],
+ 'tests': [False, 'Build for tests'],
+ }
+
+ amd_gpu_arches = [
+ 'fiji',
+ 'gfx901',
+ 'vega900',
+ 'vega906',
+ ]
+ variant("amd_gpu_arch", default='none', values=amd_gpu_arches,
+ description="AMD GPU architecture")
+ conflicts("+hip", when="amd_gpu_arch=none")
+
+ spack_micro_arch_map = {
+ "aarch64": "",
+ "arm": "",
+ "ppc": "",
+ "ppc64": "",
+ "ppc64le": "",
+ "ppcle": "",
+ "sparc": None,
+ "sparc64": None,
+ "x86": "",
+ "x86_64": "",
+ "thunderx2": "THUNDERX2",
+ "k10": None,
+ "zen": "ZEN",
+ "bulldozer": "",
+ "piledriver": "",
+ "zen2": "ZEN2",
+ "steamroller": "KAVERI",
+ "excavator": "CARIZO",
+ "a64fx": "",
+ "power7": "POWER7",
+ "power8": "POWER8",
+ "power9": "POWER9",
+ "power8le": "POWER8",
+ "power9le": "POWER9",
+ "i686": None,
+ "pentium2": None,
+ "pentium3": None,
+ "pentium4": None,
+ "prescott": None,
+ "nocona": None,
+ "nehalem": None,
+ "sandybridge": "SNB",
+ "haswell": "HSW",
+ "mic_knl": "KNL",
+ "cannonlake": "SKX",
+ "cascadelake": "SKX",
+ "westmere": "WSM",
+ "core2": None,
+ "ivybridge": "SNB",
+ "broadwell": "BDW",
+ "skylake": "SKX",
+ "icelake": "SKX",
+ "skylake_avx512": "SKX",
+ }
+
+ spack_cuda_arch_map = {
+ "30": 'kepler30',
+ "32": 'kepler32',
+ "35": 'kepler35',
+ "37": 'kepler37',
+ "50": 'maxwell50',
+ "52": 'maxwell52',
+ "53": 'maxwell53',
+ "60": 'pascal60',
+ "61": 'pascal61',
+ "70": 'volta70',
+ "72": 'volta72',
+ "75": 'turing75',
+ }
+ cuda_arches = spack_cuda_arch_map.values()
+ conflicts("+cuda", when="cuda_arch=none")
+
+ devices_values = list(devices_variants.keys())
+ for dev in devices_variants:
+ dflt, desc = devices_variants[dev]
+ variant(dev, default=dflt, description=desc)
+
+ options_values = list(options_variants.keys())
+ for opt in options_values:
+ if "cuda" in opt:
+ conflicts('+%s' % opt, when="~cuda",
+ msg="Must enable CUDA to use %s" % opt)
+ dflt, desc = options_variants[opt]
+ variant(opt, default=dflt, description=desc)
+
+ tpls_values = list(tpls_variants.keys())
+ for tpl in tpls_values:
+ dflt, desc = tpls_variants[tpl]
+ variant(tpl, default=dflt, description=desc)
+ depends_on(tpl, when="+%s" % tpl)
+
+ variant("wrapper", default=False,
+ description="Use nvcc-wrapper for CUDA build")
+ depends_on("kokkos-nvcc-wrapper", when="+wrapper")
+ conflicts("+wrapper", when="~cuda")
+
+ variant("std", default="11", values=["11", "14", "17", "20"], multi=False)
+ # nvcc does not currently work with C++17 or C++20
+ conflicts("+cuda", when="std=17")
+ conflicts("+cuda", when="std=20")
+
+ def append_args(self, cmake_prefix, cmake_options, spack_options):
+ for opt in cmake_options:
+ enablestr = "+%s" % opt
+ optuc = opt.upper()
+ optname = "Kokkos_%s_%s" % (cmake_prefix, optuc)
+ option = None
+ if enablestr in self.spec:
+ option = "-D%s=ON" % optname
+ else:
+ # explicitly turn off if not enabled
+ # this avoids any confusing implicit defaults
+ # that come from the CMake
+ option = "-D%s=OFF" % optname
+ if option not in spack_options:
+ spack_options.append(option)
+
+ def setup_dependent_package(self, module, dependent_spec):
+ try:
+ self.spec.kokkos_cxx = self.spec["kokkos-nvcc-wrapper"].kokkos_cxx
+ except Exception:
+ self.spec.kokkos_cxx = spack_cxx
+
+ def cmake_args(self):
+ spec = self.spec
+ options = []
+
+ isdiy = "+diy" in spec
+ if isdiy:
+ options.append("-DSpack_WORKAROUND=On")
+
+ spack_microarches = []
+ if "+cuda" in spec:
+ # this is a list
+ for cuda_arch in spec.variants["cuda_arch"].value:
+ if not cuda_arch == "none":
+ kokkos_arch_name = self.spack_cuda_arch_map[cuda_arch]
+ spack_microarches.append(kokkos_arch_name)
+ kokkos_microarch_name = self.spack_micro_arch_map[spec.target.name]
+ if kokkos_microarch_name:
+ spack_microarches.append(kokkos_microarch_name)
+
+ for arch in amd_gpu_arches:
+ keyval = "amd_gpu_arch=%s" % arch
+ if keyval in spec:
+ spack_microarches.append(arch)
+
+ for arch in spack_microarches:
+ options.append("-DKokkos_ARCH_%s=ON" % arch.upper())
+
+ self.append_args("ENABLE", self.devices_values, options)
+ self.append_args("ENABLE", self.options_values, options)
+ self.append_args("ENABLE", self.tpls_values, options)
+ self.append_args("ARCH", self.arch_values, options)
+
+ for tpl in self.tpls_values:
+ var = "+%s" % tpl
+ if var in self.spec:
+ options.append("-D%s_DIR=%s" % (tpl, spec[tpl].prefix))
+
+ # we do not need the compiler wrapper from Spack
+ # set the compiler explicitly (may be Spack wrapper or nvcc-wrapper)
+ try:
+ options.append("-DCMAKE_CXX_COMPILER=%s" %
+ self.spec["kokkos-nvcc-wrapper"].kokkos_cxx)
+ except Exception:
+ options.append("-DCMAKE_CXX_COMPILER=%s" % spack_cxx)
+
+ # Set the C++ standard to use
+ options.append("-DKokkos_CXX_STANDARD=%s" %
+ self.spec.variants["std"].value)
+
+ return options
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index 9a6ef2e2b4..f25c920da1 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -106,7 +106,7 @@ class Lammps(CMakePackage, CudaPackage):
depends_on('jpeg', when='+jpeg')
depends_on('libpng', when='+png')
depends_on('ffmpeg', when='+ffmpeg')
- depends_on('kokkos', when='+kokkos')
+ depends_on('kokkos-legacy', when='+kokkos')
conflicts('+cuda', when='+opencl')
conflicts('+body', when='+poems@:20180628')
diff --git a/var/spack/repos/builtin/packages/miniaero/package.py b/var/spack/repos/builtin/packages/miniaero/package.py
index f467947719..a18a5bfecf 100644
--- a/var/spack/repos/builtin/packages/miniaero/package.py
+++ b/var/spack/repos/builtin/packages/miniaero/package.py
@@ -19,7 +19,7 @@ class Miniaero(MakefilePackage):
version('2016-11-11', commit='f46d135479a5be19ec5d146ccaf0e581aeff4596')
- depends_on('kokkos')
+ depends_on('kokkos-legacy')
@property
def build_targets(self):