From 9fa952705d297589abd528b6595e058e62a6c31b Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 1 Oct 2024 13:53:36 -0700 Subject: [PATCH] resolve strumpack issues on tioga, fix cmake var naming --- CMakeLists.txt | 4 +++- cmake/SeracConfigHeader.cmake | 2 +- scripts/spack/packages/serac/package.py | 9 ++++++--- scripts/spack/specs.json | 2 +- scripts/testing/ats.sh.in | 2 +- src/serac/serac_config.hpp.in | 4 +++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2382c8b4bf..be452dccd4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,9 @@ if(NOT DEFINED SERAC_SOURCE_DIR) endif() message(STATUS "Serac Source Dir: ${SERAC_SOURCE_DIR}") -if(SERAC_ENABLE_CODEVELOP) +# For HIP case, this flag prevents the following Strumpack linker error: +# undefined symbol: mpi_abort_ +if(SERAC_ENABLE_CODEVELOP OR (ENABLE_HIP AND STRUMPACK_DIR)) set(ENABLE_FORTRAN ON CACHE BOOL "") endif() diff --git a/cmake/SeracConfigHeader.cmake b/cmake/SeracConfigHeader.cmake index e5ad83a173..7f6276aad5 100644 --- a/cmake/SeracConfigHeader.cmake +++ b/cmake/SeracConfigHeader.cmake @@ -60,7 +60,7 @@ endif() # General Build Info #------------------------------------------------------------------------------ serac_convert_to_native_escaped_file_path(${PROJECT_SOURCE_DIR} SERAC_REPO_DIR) -serac_convert_to_native_escaped_file_path(${CMAKE_BINARY_DIR} SERAC_BIN_DIR) +serac_convert_to_native_escaped_file_path(${CMAKE_BINARY_DIR} SERAC_BINARY_DIR) #------------------------------------------------------------------------------ # Create Config Header diff --git a/scripts/spack/packages/serac/package.py b/scripts/spack/packages/serac/package.py index 240e0c7c55..3e00dadabe 100644 --- a/scripts/spack/packages/serac/package.py +++ b/scripts/spack/packages/serac/package.py @@ -379,7 +379,7 @@ def initconfig_hardware_entries(self): entries.append( cmake_cache_option("gtest_disable_pthreads", True)) - if "+rocm" in spec: + if spec.satisfies("+rocm"): entries.append(cmake_cache_option("ENABLE_HIP", True)) hip_root = spec["hip"].prefix @@ -398,10 +398,13 @@ def initconfig_hardware_entries(self): hip_link_flags += "-L{0}/../llvm/lib -L{0}/lib ".format(hip_root) hip_link_flags += "-Wl,-rpath,{0}/../llvm/lib:{0}/lib ".format(hip_root) hip_link_flags += "-lpgmath -lflang -lflangrti -lompstub -lamdhip64 " - hip_link_flags += " -L{0}/../lib64 -Wl,-rpath,{0}/../lib64 ".format(hip_root) - hip_link_flags += " -L{0}/../lib -Wl,-rpath,{0}/../lib ".format(hip_root) + hip_link_flags += "-L{0}/../lib64 -Wl,-rpath,{0}/../lib64 ".format(hip_root) + hip_link_flags += "-L{0}/../lib -Wl,-rpath,{0}/../lib ".format(hip_root) hip_link_flags += "-lamd_comgr -lhsa-runtime64 " + if spec.satisfies("+strumpack"): + hip_link_flags += "-lhipblas -lrocsolver " + entries.append(cmake_cache_string("CMAKE_EXE_LINKER_FLAGS", hip_link_flags)) if spec.satisfies("target=ppc64le:"): diff --git a/scripts/spack/specs.json b/scripts/spack/specs.json index ecd30d254d..83ae8a3462 100644 --- a/scripts/spack/specs.json +++ b/scripts/spack/specs.json @@ -18,7 +18,7 @@ "clang@14.0.6+devtools+profiling" ], "toss_4_x86_64_ib_cray": - [ "clang@17.0.0~openmp+profiling+rocm+raja+umpire~strumpack~petsc amdgpu_target=gfx90a ^hdf5 cflags=-Wno-int-conversion"], + [ "clang@17.0.0~openmp+profiling+rocm+raja+umpire+strumpack~petsc amdgpu_target=gfx90a ^hdf5 cflags=-Wno-int-conversion"], "blueos_3_ppc64le_ib_p9": [ "clang@10.0.1+devtools+cuda+raja+umpire+profiling~strumpack cuda_arch=70" ] diff --git a/scripts/testing/ats.sh.in b/scripts/testing/ats.sh.in index a4ef362936..1b739d0a7f 100755 --- a/scripts/testing/ats.sh.in +++ b/scripts/testing/ats.sh.in @@ -15,7 +15,7 @@ # WSL: ./ats.sh # Variables used inside of the base test.ats and this script -export ATS_SERAC_BIN_DIR=@SERAC_BIN_DIR@/bin +export ATS_SERAC_BIN_DIR=@SERAC_BINARY_DIR@/bin export ATS_SERAC_REPO_DIR=@SERAC_REPO_DIR@ export ATS_EXECUTABLE=@ATS_EXECUTABLE@ export ATS_SERAC_BASELINE="none" diff --git a/src/serac/serac_config.hpp.in b/src/serac/serac_config.hpp.in index 2f547920b2..91d4a5f43e 100644 --- a/src/serac/serac_config.hpp.in +++ b/src/serac/serac_config.hpp.in @@ -20,7 +20,7 @@ // Serac Locations #define SERAC_REPO_DIR "@SERAC_REPO_DIR@" -#define SERAC_BIN_DIR "@SERAC_BIN_DIR@" +#define SERAC_BINARY_DIR "@SERAC_BINARY_DIR@" // Compiler Information #define SERAC_COMPILER_NAME "@CMAKE_CXX_COMPILER_ID@" @@ -31,6 +31,8 @@ #cmakedefine SERAC_USE_CUDA #cmakedefine SERAC_USE_HIP +#cmakedefine SERAC_USE_OPENMP +#cmakedefine SERAC_USE_MPI // Compiler defines for TPLs #cmakedefine SERAC_USE_ADIAK