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.
This commit is contained in:
Brian Van Essen 2021-08-16 00:47:27 -07:00 committed by GitHub
parent de0d618730
commit 09fa9cdaae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 6 deletions

View File

@ -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 @@ def cmake_args(self):
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

View File

@ -187,6 +187,7 @@ def cmake_args(self):
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 @@ def cmake_args(self):
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

View File

@ -172,6 +172,7 @@ def cmake_args(self):
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 @@ def cmake_args(self):
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)

View File

@ -249,6 +249,7 @@ def common_config_args(self):
# Environment variables
cppflags = []
cppflags.append('-DLBANN_SET_EL_RNG')
cppflags.append('-std=c++17')
args = []
args.extend([
'-DCMAKE_CXX_FLAGS=%s' % ' '.join(cppflags),