Skip to content

Commit

Permalink
Axom: Remove blueos check on cuda variant (spack#24349)
Browse files Browse the repository at this point in the history
* remove blueos check on cuda variant, fix typo

* restore necessary compiler guard

* remove axom+cuda from testing because it only partially works outside ppc systems
  • Loading branch information
white238 authored Jun 22, 2021
1 parent c83f4b0 commit c9932b2
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 65 deletions.
3 changes: 1 addition & 2 deletions share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ spack:

- cuda_specs:
- amrex +cuda cuda_arch=70
- axom +cuda cuda_arch=70 ^umpire@4.1.2 ~shared
# - axom +cuda cuda_arch=70 ^umpire@4.1.2 ~shared
- caliper +cuda cuda_arch=70
- chai +cuda ~benchmarks ~tests cuda_arch=70 ^umpire@4.1.2 ~shared
- ginkgo +cuda cuda_arch=70
Expand Down Expand Up @@ -368,4 +368,3 @@ spack:
url: https://cdash.spack.io
project: Spack Testing
site: Cloud Gitlab Infrastructure

130 changes: 67 additions & 63 deletions var/spack/repos/builtin/packages/axom/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,39 +196,38 @@ def initconfig_hardware_entries(self):
spec = self.spec
entries = super(Axom, self).initconfig_hardware_entries()

if spec.satisfies('target=ppc64le:'):
if "+cuda" in spec:
entries.append(cmake_cache_option("ENABLE_CUDA", True))
entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION",
True))
if "+cuda" in spec:
entries.append(cmake_cache_option("ENABLE_CUDA", True))
entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION",
True))

entries.append(
cmake_cache_option("AXOM_ENABLE_ANNOTATIONS", True))
entries.append(
cmake_cache_option("AXOM_ENABLE_ANNOTATIONS", True))

# CUDA_FLAGS
cudaflags = "-restrict --expt-extended-lambda "
# CUDA_FLAGS
cudaflags = "-restrict --expt-extended-lambda "

if not spec.satisfies('cuda_arch=none'):
cuda_arch = spec.variants['cuda_arch'].value[0]
entries.append(cmake_cache_string(
"CMAKE_CUDA_ARCHITECTURES",
cuda_arch))
cudaflags += '-arch sm_${CMAKE_CUDA_ARCHITECTURES} '
else:
entries.append(
"# cuda_arch could not be determined\n\n")

if "+cpp14" in spec:
cudaflags += " -std=c++14"
else:
cudaflags += " -std=c++11"
if not spec.satisfies('cuda_arch=none'):
cuda_arch = spec.variants['cuda_arch'].value[0]
entries.append(cmake_cache_string(
"CMAKE_CUDA_ARCHITECTURES",
cuda_arch))
cudaflags += '-arch sm_${CMAKE_CUDA_ARCHITECTURES} '
else:
entries.append(
cmake_cache_string("CMAKE_CUDA_FLAGS", cudaflags))
"# cuda_arch could not be determined\n\n")

entries.append(
"# nvcc does not like gtest's 'pthreads' flag\n")
entries.append(
cmake_cache_option("gtest_disable_pthreads", True))
if "+cpp14" in spec:
cudaflags += " -std=c++14"
else:
cudaflags += " -std=c++11"
entries.append(
cmake_cache_string("CMAKE_CUDA_FLAGS", cudaflags))

entries.append(
"# nvcc does not like gtest's 'pthreads' flag\n")
entries.append(
cmake_cache_option("gtest_disable_pthreads", True))

entries.append("#------------------{0}".format("-" * 30))
entries.append("# Hardware Specifics")
Expand All @@ -244,41 +243,46 @@ def initconfig_hardware_entries(self):
not spec.satisfies('+cuda target=ppc64le:')
))

if spec.satisfies('target=ppc64le:'):
if (self.compiler.fc is not None) and ("xlf" in self.compiler.fc):
description = ("Converts C-style comments to Fortran style "
"in preprocessed files")
if (self.compiler.fc is not None) and ("xlf" in self.compiler.fc):
# Grab lib directory for the current fortran compiler
libdir = pjoin(os.path.dirname(
os.path.dirname(self.compiler.fc)),
"lib")
description = ("Adds a missing rpath for libraries "
"associated with the fortran compiler")

linker_flags = "${BLT_EXE_LINKER_FLAGS} -Wl,-rpath," + libdir

entries.append(cmake_cache_string("BLT_EXE_LINKER_FLAGS",
linker_flags, description))

if "+shared" in spec:
linker_flags = "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath," \
+ libdir
entries.append(cmake_cache_string(
"BLT_FORTRAN_FLAGS",
"-WF,-C! -qxlf2003=polymorphic",
description))
# Grab lib directory for the current fortran compiler
libdir = pjoin(os.path.dirname(
os.path.dirname(self.compiler.fc)),
"lib")
description = ("Adds a missing rpath for libraries "
"associated with the fortran compiler")
linker_flags = "${BLT_EXE_LINKER_FLAGS} -Wl,-rpath," + libdir
entries.append(cmake_cache_string("BLT_EXE_LINKER_FLAGS",
linker_flags, description))
if "+shared" in spec:
linker_flags = "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath," \
+ libdir
"CMAKE_SHARED_LINKER_FLAGS",
linker_flags, description))

description = ("Converts C-style comments to Fortran style "
"in preprocessed files")
entries.append(cmake_cache_string(
"BLT_FORTRAN_FLAGS",
"-WF,-C! -qxlf2003=polymorphic",
description))

if spec.satisfies('target=ppc64le:'):
# Fix for working around CMake adding implicit link directories
# returned by the BlueOS compilers to link executables with
# non-system default stdlib
_gcc_prefix = "/usr/tce/packages/gcc/gcc-4.9.3/lib64"
if os.path.exists(_gcc_prefix):
_gcc_prefix2 = pjoin(
_gcc_prefix,
"gcc/powerpc64le-unknown-linux-gnu/4.9.3")
_link_dirs = "{0};{1}".format(_gcc_prefix, _gcc_prefix2)
entries.append(cmake_cache_string(
"CMAKE_SHARED_LINKER_FLAGS",
linker_flags, description))

# Fix for working around CMake adding implicit link directories
# returned by the BlueOS compilers to link executables with
# non-system default stdlib
_gcc_prefix = "/usr/tce/packages/gcc/gcc-4.9.3/lib64"
if os.path.exists(_gcc_prefix):
_gcc_prefix2 = pjoin(
_gcc_prefix,
"gcc/powerpc64le-unknown-linux-gnu/4.9.3")
_link_dirs = "{0};{1}".format(_gcc_prefix, _gcc_prefix2)
entries.append(cmake_cache_string(
"BLT_CMAKE_IMPLICIT_LINK_DIRECTORIES_EXCLUDE", _link_dirs))
"BLT_CMAKE_IMPLICIT_LINK_DIRECTORIES_EXCLUDE",
_link_dirs))

return entries

Expand Down Expand Up @@ -327,7 +331,7 @@ def initconfig_package_entries(self):
entries.append(cmake_cache_path('%s_DIR' % dep.upper(),
dep_dir))
else:
entries.append('# %s not build\n' % dep.upper())
entries.append('# %s not built\n' % dep.upper())

if '+scr' in spec:
dep_dir = get_spec_path(spec, 'scr', path_replacements)
Expand All @@ -339,7 +343,7 @@ def initconfig_package_entries(self):
dep_dir = get_spec_path(spec, dep, path_replacements)
entries.append(cmake_cache_path('%s_DIR' % dep.upper(), dep_dir))
else:
entries.append('# scr not build\n')
entries.append('# scr not built\n')

##################################
# Devtools
Expand Down

0 comments on commit c9932b2

Please sign in to comment.