summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorBrian Van Essen <vanessen1@llnl.gov>2021-08-16 00:47:27 -0700
committerGitHub <noreply@github.com>2021-08-16 09:47:27 +0200
commit09fa9cdaaee5649ef914bec19cae428e87cb3f8e (patch)
treec6be9f18ab9d7ab799b172d699069f929b01c6b8 /var
parentde0d618730f89488c99bf623485c01b6e32834cd (diff)
downloadspack-09fa9cdaaee5649ef914bec19cae428e87cb3f8e.tar.gz
spack-09fa9cdaaee5649ef914bec19cae428e87cb3f8e.tar.bz2
spack-09fa9cdaaee5649ef914bec19cae428e87cb3f8e.tar.xz
spack-09fa9cdaaee5649ef914bec19cae428e87cb3f8e.zip
C++17 support for LBANN and HIP (#25406)
* Added logic to explicitly pass the c++17 language flags to the HIP/ROCm software stack to ensure that HIP complies with the C++17 requirements.
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/aluminum/package.py12
-rw-r--r--var/spack/repos/builtin/packages/dihydrogen/package.py3
-rw-r--r--var/spack/repos/builtin/packages/hydrogen/package.py4
-rw-r--r--var/spack/repos/builtin/packages/lbann/package.py1
4 files changed, 14 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/aluminum/package.py b/var/spack/repos/builtin/packages/aluminum/package.py
index ea8d9e8317..4bf96ebc80 100644
--- a/var/spack/repos/builtin/packages/aluminum/package.py
+++ b/var/spack/repos/builtin/packages/aluminum/package.py
@@ -60,13 +60,16 @@ class Aluminum(CMakePackage, CudaPackage, ROCmPackage):
def cmake_args(self):
spec = self.spec
args = [
- '-DCMAKE_CXX_STANDARD=14',
+ '-DCMAKE_CXX_STANDARD:STRING=17',
'-DALUMINUM_ENABLE_CUDA:BOOL=%s' % ('+cuda' in spec),
'-DALUMINUM_ENABLE_NCCL:BOOL=%s' % ('+nccl' in spec or '+rccl' in spec),
'-DALUMINUM_ENABLE_ROCM:BOOL=%s' % ('+rocm' in spec)]
if '+cuda' in spec:
- args.append('-DCMAKE_CUDA_STANDARD=14')
+ if spec.satisfies('^cuda@11.0:'):
+ args.append('-DCMAKE_CUDA_STANDARD=17')
+ else:
+ args.append('-DCMAKE_CUDA_STANDARD=14')
archs = spec.variants['cuda_arch'].value
if archs != 'none':
arch_str = ";".join(archs)
@@ -98,13 +101,14 @@ class Aluminum(CMakePackage, CudaPackage, ROCmPackage):
if '+rocm' in spec:
args.extend([
'-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
- '-DHIP_CXX_COMPILER={0}'.format(self.spec['hip'].hipcc)])
+ '-DHIP_CXX_COMPILER={0}'.format(self.spec['hip'].hipcc),
+ '-DCMAKE_CXX_FLAGS=-std=c++17'])
archs = self.spec.variants['amdgpu_target'].value
if archs != 'none':
arch_str = ",".join(archs)
args.append(
'-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'
- ' -g -fsized-deallocation -fPIC'.format(arch_str)
+ ' -g -fsized-deallocation -fPIC -std=c++17'.format(arch_str)
)
return args
diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py
index 338389fee6..82844e8c4e 100644
--- a/var/spack/repos/builtin/packages/dihydrogen/package.py
+++ b/var/spack/repos/builtin/packages/dihydrogen/package.py
@@ -187,6 +187,7 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
if '+rocm' in spec:
args.extend([
+ '-DCMAKE_CXX_FLAGS=-std=c++17',
'-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
'-DHIP_CXX_COMPILER={0}'.format(self.spec['hip'].hipcc)])
archs = self.spec.variants['amdgpu_target'].value
@@ -194,7 +195,7 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage):
arch_str = ",".join(archs)
args.append(
'-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'
- ' -g -fsized-deallocation -fPIC'.format(arch_str)
+ ' -g -fsized-deallocation -fPIC -std=c++17'.format(arch_str)
)
return args
diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py
index 597624f67e..f31213d124 100644
--- a/var/spack/repos/builtin/packages/hydrogen/package.py
+++ b/var/spack/repos/builtin/packages/hydrogen/package.py
@@ -172,6 +172,7 @@ class Hydrogen(CMakePackage, CudaPackage, ROCmPackage):
if '+rocm' in spec:
args.extend([
+ '-DCMAKE_CXX_FLAGS=-std=c++17',
'-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
'-DHIP_CXX_COMPILER={0}'.format(self.spec['hip'].hipcc)])
archs = self.spec.variants['amdgpu_target'].value
@@ -180,7 +181,8 @@ class Hydrogen(CMakePackage, CudaPackage, ROCmPackage):
cxxflags_str = " ".join(self.spec.compiler_flags['cxxflags'])
args.append(
'-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'
- ' -g -fsized-deallocation -fPIC {1}'.format(arch_str, cxxflags_str)
+ ' -g -fsized-deallocation -fPIC {1}'
+ ' -std=c++17'.format(arch_str, cxxflags_str)
)
# Add support for OS X to find OpenMP (LLVM installed via brew)
diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py
index e8c37790e7..43f83812e1 100644
--- a/var/spack/repos/builtin/packages/lbann/package.py
+++ b/var/spack/repos/builtin/packages/lbann/package.py
@@ -249,6 +249,7 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage):
# Environment variables
cppflags = []
cppflags.append('-DLBANN_SET_EL_RNG')
+ cppflags.append('-std=c++17')
args = []
args.extend([
'-DCMAKE_CXX_FLAGS=%s' % ' '.join(cppflags),