axom icon indicating copy to clipboard operation
axom copied to clipboard

Compilation error in CUDA configurations without RAJA

Open kennyweiss opened this issue 1 year ago • 0 comments

In working through a user configuration error, I discovered a bug in CUDA-based configurations of axom without RAJA.

It shows up in a few places, e.g.

<axom>/src/axom/primal/tests/primal_zip.cpp(524): error: namespace "axom" has no member "CUDA_EXEC"
<axom>/src/axom/spin/tests/spin_uniform_grid.cpp(498): error: namespace "axom" has no member "CUDA_EXEC"
<axom>/src/axom/spin/tests/spin_uniform_grid.cpp(498): error: namespace "axom" has no member "CUDA_EXEC"

Looks like CUDA_EXEC is not properly guarded for this use-case: https://github.com/LLNL/axom/blob/631e5ef14952ab2a982498c0d31f972724155c23/src/axom/core/execution/internal/cuda_exec.hpp#L12-L17

Details

I used the following host-config on LLNL's blueos platform which configures axom w/o any third-party libs:

#------------------------------------------------------------------------------
# !!!! Adapted from axom's rzansel-clang-cuda host-config
#------------------------------------------------------------------------------
# CMake executable path: /usr/tce/packages/cmake/cmake-3.21.1/bin/cmake
#------------------------------------------------------------------------------

set(COMPILER_VERSION "clang-ibm-14.0.5" CACHE STRING "")
set(CUDA_VERSION "cuda-12.0.0" CACHE STRING "")

set(GCC_HOME "/usr/tce/packages/gcc/gcc-11.2.1" CACHE PATH "")
set(BLT_C_FLAGS "--gcc-toolchain=${GCC_HOME}" CACHE STRING "")
set(BLT_CXX_FLAGS "--gcc-toolchain=${GCC_HOME}" CACHE STRING "")  
  
#------------------------------------------------------------------------------
# Compilers
#------------------------------------------------------------------------------

set(CMAKE_C_COMPILER "/usr/tce/packages/clang/${COMPILER_VERSION}/bin/clang" CACHE PATH "")
set(CMAKE_CXX_COMPILER "/usr/tce/packages/clang/${COMPILER_VERSION}/bin/clang++" CACHE PATH "")
set(CMAKE_GENERATOR "Unix Makefiles" CACHE STRING "")
set(ENABLE_FORTRAN OFF CACHE BOOL "")

set(BLT_EXE_LINKER_FLAGS "--gcc-toolchain=${GCC_HOME}" CACHE STRING "")

#------------------------------------------------------------------------------
# MPI
#------------------------------------------------------------------------------

set(ENABLE_MPI ON CACHE BOOL "")
set(MPI_C_COMPILER "/usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-${COMPILER_VERSION}/bin/mpicc" CACHE PATH "")
set(MPI_CXX_COMPILER "/usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-${COMPILER_VERSION}/bin/mpicxx" CACHE PATH "")
set(MPIEXEC_EXECUTABLE "/usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-${COMPILER_VERSION}/bin/mpirun" CACHE PATH "")
set(MPIEXEC_NUMPROC_FLAG "-np" CACHE STRING "")
set(BLT_MPI_COMMAND_APPEND "mpibind" CACHE STRING "")

#------------------------------------------------
# Cuda
#------------------------------------------------

set(ENABLE_CUDA ON CACHE BOOL "")
set(CUDAToolkit_ROOT "/usr/tce/packages/cuda/${CUDA_VERSION}" CACHE PATH "")
set(CMAKE_CUDA_COMPILER "${CUDAToolkit_ROOT}/bin/nvcc" CACHE PATH "")
set(CMAKE_CUDA_HOST_COMPILER "${CMAKE_CXX_COMPILER}" CACHE PATH "")
set(CUDA_TOOLKIT_ROOT_DIR "/usr/tce/packages/cuda/${CUDA_VERSION}" CACHE PATH "")
set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "")
set(CMAKE_CUDA_SEPARABLE_COMPILATION ON CACHE BOOL "")
set(AXOM_ENABLE_ANNOTATIONS ON CACHE BOOL "")
set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "")
set(gtest_disable_pthreads ON CACHE BOOL "") # nvcc does not like gtest's 'pthreads' flag
set(CMAKE_CUDA_FLAGS "-restrict --expt-extended-lambda -Xcompiler=--gcc-toolchain=${GCC_HOME}" CACHE STRING "")

#------------------------------------------------
# Other
#------------------------------------------------

# The following allows us to build axom w/o any TPLs
set(AXOM_ENABLE_SIDRE OFF CACHE BOOL "")
set(AXOM_ENABLE_KLEE OFF CACHE BOOL "")
set(AXOM_ENABLE_INLET OFF CACHE BOOL "")

set(ENABLE_OPENMP OFF CACHE BOOL "")
set(ENABLE_GTEST_DEATH_TESTS OFF CACHE BOOL "")
set(ENABLE_DOCS OFF CACHE BOOL "")
set(ENABLE_TESTS ON CACHE BOOL "")

kennyweiss avatar Dec 06 '23 03:12 kennyweiss