Kokkos nvcc wrapper 3.2.00 (#19023)
* Add more updates for kokkos 3.2 release, particularly nvcc-wrapper * Use an ordinary Package Co-authored-by: Jeremiah J Wilke <jjwilke@kokkos-dev-2.sandia.gov>
This commit is contained in:
parent
c62c94d521
commit
496d83a26a
@ -15,10 +15,12 @@ class KokkosKernels(CMakePackage, CudaPackage):
|
|||||||
|
|
||||||
version('develop', branch='develop')
|
version('develop', branch='develop')
|
||||||
version('master', branch='master')
|
version('master', branch='master')
|
||||||
|
version('3.2.00', sha256="8ac20ee28ae7813ce1bda461918800ad57fdbac2af86ef5d1ba74e83e10956de")
|
||||||
version('3.1.00', sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89")
|
version('3.1.00', sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89")
|
||||||
version('3.0.00', sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6")
|
version('3.0.00', sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6")
|
||||||
|
|
||||||
depends_on("kokkos")
|
depends_on("kokkos")
|
||||||
|
depends_on("kokkos@master", when="@master")
|
||||||
depends_on("kokkos@develop", when="@develop")
|
depends_on("kokkos@develop", when="@develop")
|
||||||
depends_on("cmake@3.10:", type='build')
|
depends_on("cmake@3.10:", type='build')
|
||||||
|
|
||||||
|
@ -6,17 +6,22 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
class KokkosNvccWrapper(CMakePackage):
|
class KokkosNvccWrapper(Package):
|
||||||
"""The NVCC wrapper provides a wrapper around NVCC to make it a
|
"""The NVCC wrapper provides a wrapper around NVCC to make it a
|
||||||
'full' C++ compiler that accepts all flags"""
|
'full' C++ compiler that accepts all flags"""
|
||||||
|
|
||||||
|
# We no longer maintain this as a separate repo
|
||||||
|
# Download the Kokkos repo and install from there
|
||||||
homepage = "https://github.com/kokkos/kokkos"
|
homepage = "https://github.com/kokkos/kokkos"
|
||||||
git = "https://github.com/kokkos/nvcc_wrapper.git"
|
git = "git@github.com:kokkos/kokkos.git"
|
||||||
|
url = "https://github.com/kokkos/kokkos/archive/3.1.01.tar.gz"
|
||||||
|
|
||||||
version('3.1', url='https://github.com/kokkos/nvcc_wrapper/archive/3.1.tar.gz',
|
version('3.2.00', sha256='05e1b4dd1ef383ca56fe577913e1ff31614764e65de6d6f2a163b2bddb60b3e9')
|
||||||
sha256="5171530763bb2845aa70651f3a8e5dc95b6eed76379323fde3205f97ed28ec8c",
|
version('3.1.01', sha256='ff5024ebe8570887d00246e2793667e0d796b08c77a8227fe271127d36eec9dd')
|
||||||
default=True)
|
version('3.1.00', sha256="b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878")
|
||||||
|
version('3.0.00', sha256="c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b")
|
||||||
version('master', branch='master')
|
version('master', branch='master')
|
||||||
|
version('develop', branch='develop')
|
||||||
|
|
||||||
variant("mpi", default=True,
|
variant("mpi", default=True,
|
||||||
description="use with MPI as the underlying compiler")
|
description="use with MPI as the underlying compiler")
|
||||||
@ -24,19 +29,18 @@ class KokkosNvccWrapper(CMakePackage):
|
|||||||
depends_on("mpi", when="+mpi")
|
depends_on("mpi", when="+mpi")
|
||||||
depends_on("cmake@3.10:", type='build')
|
depends_on("cmake@3.10:", type='build')
|
||||||
|
|
||||||
def cmake_args(self):
|
def install(self, spec, prefix):
|
||||||
options = [
|
src = os.path.join("bin", "nvcc_wrapper")
|
||||||
"-DCMAKE_CXX_COMPILER=%s" % os.environ["SPACK_CXX"],
|
mkdir(prefix.bin)
|
||||||
"-DCMAKE_CUDA_HOST_COMPILER=%s" % os.environ["SPACK_CXX"],
|
install(src, prefix.bin)
|
||||||
"-DCMAKE_C_COMPILER=%s" % os.environ["SPACK_CC"],
|
|
||||||
]
|
|
||||||
return options
|
|
||||||
|
|
||||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||||
wrapper = join_path(self.prefix.bin, "nvcc_wrapper")
|
wrapper = join_path(self.prefix.bin, "nvcc_wrapper")
|
||||||
|
env.set('CUDA_ROOT', dependent_spec["cuda"].prefix)
|
||||||
|
env.set('NVCC_WRAPPER_DEFAULT_COMPILER', self.compiler.cxx)
|
||||||
|
env.set('KOKKOS_CXX', self.compiler.cxx)
|
||||||
env.set('MPICH_CXX', wrapper)
|
env.set('MPICH_CXX', wrapper)
|
||||||
env.set('OMPI_CXX', wrapper)
|
env.set('OMPI_CXX', wrapper)
|
||||||
env.set('KOKKOS_CXX', spack_cxx)
|
|
||||||
|
|
||||||
def setup_dependent_package(self, module, dependent_spec):
|
def setup_dependent_package(self, module, dependent_spec):
|
||||||
wrapper = join_path(self.prefix.bin, "nvcc_wrapper")
|
wrapper = join_path(self.prefix.bin, "nvcc_wrapper")
|
||||||
|
@ -172,6 +172,8 @@ class Kokkos(CMakePackage, CudaPackage):
|
|||||||
variant("wrapper", default=False,
|
variant("wrapper", default=False,
|
||||||
description="Use nvcc-wrapper for CUDA build")
|
description="Use nvcc-wrapper for CUDA build")
|
||||||
depends_on("kokkos-nvcc-wrapper", when="+wrapper")
|
depends_on("kokkos-nvcc-wrapper", when="+wrapper")
|
||||||
|
depends_on("kokkos-nvcc-wrapper@develop", when="@develop+wrapper")
|
||||||
|
depends_on("kokkos-nvcc-wrapper@master", when="@master+wrapper")
|
||||||
conflicts("+wrapper", when="~cuda")
|
conflicts("+wrapper", when="~cuda")
|
||||||
|
|
||||||
variant("std", default="11", values=["11", "14", "17", "20"], multi=False)
|
variant("std", default="11", values=["11", "14", "17", "20"], multi=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user