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:
parent
de0d618730
commit
09fa9cdaae
@ -60,12 +60,15 @@ class Aluminum(CMakePackage, CudaPackage, ROCmPackage):
|
|||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
args = [
|
args = [
|
||||||
'-DCMAKE_CXX_STANDARD=14',
|
'-DCMAKE_CXX_STANDARD:STRING=17',
|
||||||
'-DALUMINUM_ENABLE_CUDA:BOOL=%s' % ('+cuda' in spec),
|
'-DALUMINUM_ENABLE_CUDA:BOOL=%s' % ('+cuda' in spec),
|
||||||
'-DALUMINUM_ENABLE_NCCL:BOOL=%s' % ('+nccl' in spec or '+rccl' in spec),
|
'-DALUMINUM_ENABLE_NCCL:BOOL=%s' % ('+nccl' in spec or '+rccl' in spec),
|
||||||
'-DALUMINUM_ENABLE_ROCM:BOOL=%s' % ('+rocm' in spec)]
|
'-DALUMINUM_ENABLE_ROCM:BOOL=%s' % ('+rocm' in spec)]
|
||||||
|
|
||||||
if '+cuda' in spec:
|
if '+cuda' in spec:
|
||||||
|
if spec.satisfies('^cuda@11.0:'):
|
||||||
|
args.append('-DCMAKE_CUDA_STANDARD=17')
|
||||||
|
else:
|
||||||
args.append('-DCMAKE_CUDA_STANDARD=14')
|
args.append('-DCMAKE_CUDA_STANDARD=14')
|
||||||
archs = spec.variants['cuda_arch'].value
|
archs = spec.variants['cuda_arch'].value
|
||||||
if archs != 'none':
|
if archs != 'none':
|
||||||
@ -98,13 +101,14 @@ def cmake_args(self):
|
|||||||
if '+rocm' in spec:
|
if '+rocm' in spec:
|
||||||
args.extend([
|
args.extend([
|
||||||
'-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
|
'-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
|
archs = self.spec.variants['amdgpu_target'].value
|
||||||
if archs != 'none':
|
if archs != 'none':
|
||||||
arch_str = ",".join(archs)
|
arch_str = ",".join(archs)
|
||||||
args.append(
|
args.append(
|
||||||
'-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'
|
'-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
|
return args
|
||||||
|
@ -187,6 +187,7 @@ def cmake_args(self):
|
|||||||
|
|
||||||
if '+rocm' in spec:
|
if '+rocm' in spec:
|
||||||
args.extend([
|
args.extend([
|
||||||
|
'-DCMAKE_CXX_FLAGS=-std=c++17',
|
||||||
'-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
|
'-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)])
|
||||||
archs = self.spec.variants['amdgpu_target'].value
|
archs = self.spec.variants['amdgpu_target'].value
|
||||||
@ -194,7 +195,7 @@ def cmake_args(self):
|
|||||||
arch_str = ",".join(archs)
|
arch_str = ",".join(archs)
|
||||||
args.append(
|
args.append(
|
||||||
'-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'
|
'-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
|
return args
|
||||||
|
@ -172,6 +172,7 @@ def cmake_args(self):
|
|||||||
|
|
||||||
if '+rocm' in spec:
|
if '+rocm' in spec:
|
||||||
args.extend([
|
args.extend([
|
||||||
|
'-DCMAKE_CXX_FLAGS=-std=c++17',
|
||||||
'-DHIP_ROOT_DIR={0}'.format(spec['hip'].prefix),
|
'-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)])
|
||||||
archs = self.spec.variants['amdgpu_target'].value
|
archs = self.spec.variants['amdgpu_target'].value
|
||||||
@ -180,7 +181,8 @@ def cmake_args(self):
|
|||||||
cxxflags_str = " ".join(self.spec.compiler_flags['cxxflags'])
|
cxxflags_str = " ".join(self.spec.compiler_flags['cxxflags'])
|
||||||
args.append(
|
args.append(
|
||||||
'-DHIP_HIPCC_FLAGS=--amdgpu-target={0}'
|
'-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)
|
# Add support for OS X to find OpenMP (LLVM installed via brew)
|
||||||
|
@ -249,6 +249,7 @@ def common_config_args(self):
|
|||||||
# Environment variables
|
# Environment variables
|
||||||
cppflags = []
|
cppflags = []
|
||||||
cppflags.append('-DLBANN_SET_EL_RNG')
|
cppflags.append('-DLBANN_SET_EL_RNG')
|
||||||
|
cppflags.append('-std=c++17')
|
||||||
args = []
|
args = []
|
||||||
args.extend([
|
args.extend([
|
||||||
'-DCMAKE_CXX_FLAGS=%s' % ' '.join(cppflags),
|
'-DCMAKE_CXX_FLAGS=%s' % ' '.join(cppflags),
|
||||||
|
Loading…
Reference in New Issue
Block a user