Adding Cuda Variant to SW4Lite (#18590)

* Adding Cuda Variant to SW4Lite

Added cuda variant of sw4lite  as per guidance in README

* Updated SW4Lite+cuda to Current Header Conventions

Updated sw4lite+cuda to use current conventions for spackage include
dirs

* Fixing FLake8 Issue with Sw4lite+cuda Fix

Fixed overly long line and further underlined sticky note reminding me
to run flake8 BEFORE pushing

* Switching to Spack Compiler Wrapper

Switching to spack compiler wrapper for consistency
This commit is contained in:
Robert Pavel 2020-09-10 15:53:13 -06:00 committed by GitHub
parent ff6ca57dda
commit 3fabdb6e9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,7 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
class Sw4lite(MakefilePackage): class Sw4lite(MakefilePackage, CudaPackage):
"""Sw4lite is a bare bone version of SW4 intended for testing """Sw4lite is a bare bone version of SW4 intended for testing
performance optimizations in a few important numerical kernels of SW4.""" performance optimizations in a few important numerical kernels of SW4."""
@ -52,6 +52,15 @@ def build_targets(self):
cxxflags.append('-DSW4_CROUTINES') cxxflags.append('-DSW4_CROUTINES')
targets.append('ckernel=yes') targets.append('ckernel=yes')
if '+cuda' in self.spec:
targets.append('NVCC = {0}'.format(
self.spec['cuda'].prefix.bin.nvcc))
targets.append('HOSTCOMP = {0}'.format(spack_cxx))
targets.append('MPIPATH= {0} '.format(self.spec['mpi'].prefix))
targets.append('gpuarch= {0}'.format(self.cuda_flags(cuda_arch)))
targets.append('MPIINC = {0}'.format(
self.spec['mpi'].headers.directories[0]))
targets.append('FC=' + spec['mpi'].mpifc) targets.append('FC=' + spec['mpi'].mpifc)
targets.append('CXX=' + spec['mpi'].mpicxx) targets.append('CXX=' + spec['mpi'].mpicxx)
@ -70,6 +79,12 @@ def build_targets(self):
return targets return targets
def build(self, spec, prefix):
if '+cuda' in spec:
make('-f', 'Makefile.cuda')
else:
make('-f', 'Makefile')
def install(self, spec, prefix): def install(self, spec, prefix):
mkdir(prefix.bin) mkdir(prefix.bin)
install('*/sw4lite', prefix.bin) install('*/sw4lite', prefix.bin)