From 8f799277565492af9df39737343f344946bc7011 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Tue, 27 Aug 2024 21:09:05 -0400 Subject: [PATCH 1/8] Set CMP0135 to new --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d963d7e8..4096b525 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,9 @@ cmake_minimum_required(VERSION 3.23.1) + +if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.24.0") + cmake_policy(SET CMP0135 NEW) # Set the timestamps of all extracted contents to the time of the extraction +endif() + ################################ # GEOS_TPL ################################ From 58879ae6c0d9dd60fc3f4c21bc448ddc0f39e713 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Sat, 14 Dec 2024 18:56:17 -0500 Subject: [PATCH 2/8] Add suport to AMD GPUs --- CMakeLists.txt | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4333eba3..2aaf6621 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -365,6 +365,11 @@ ExternalProject_Add( raja -D CMAKE_INSTALL_PREFIX:PATH= -D BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -D CMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} + -D ENABLE_HIP=${ENABLE_HIP} + -D RAJA_ENABLE_HIP=${ENABLE_HIP} + -D CMAKE_HIP_COMPILER=${HIP_HIPCC_EXECUTABLE} + -D HIP_ROOT_DIR=${HIP_ROOT_DIR} + -D CMAKE_HIP_ARCHITECTURES=${HIP_ARCH} ) list(APPEND build_list raja ) @@ -410,6 +415,11 @@ ExternalProject_Add( chai -D CHAI_ENABLE_RAJA_PLUGIN=ON -D RAJA_DIR=${RAJA_DIR}/lib/cmake/raja -D UMPIRE_ENABLE_C=ON + -D ENABLE_HIP=${ENABLE_HIP} + -D CHAI_ENABLE_HIP=${ENABLE_HIP} + -D CMAKE_HIP_COMPILER=${HIP_HIPCC_EXECUTABLE} + -D HIP_ROOT_DIR=${HIP_ROOT_DIR} + -D CMAKE_HIP_ARCHITECTURES=${HIP_ARCH} ) list(APPEND build_list chai ) @@ -844,7 +854,20 @@ if( ENABLE_HYPRE ) --with-umpire-libs=umpire " ) endif() elseif( ENABLE_HYPRE_DEVICE STREQUAL "HIP" ) - message( FATAL_ERROR "hip tpls build only supported through spack" ) + list( APPEND HYPRE_DEPENDS chai ) + set( HYPRE_HIP_FLAGS "\ +ROCM_PATH=${HIP_ROOT_DIR} \ +--enable-shared \ +--with-hip \ +--enable-rocblas \ +--enable-rocsparse \ +--with-gpu-arch=${HIP_ARCH} \ +--with-umpire \ +--with-umpire-include=${CHAI_DIR}/include \ +--with-umpire-lib=\"${CHAI_DIR}/lib64 -Wl,-rpath,${CHAI_DIR}/lib64 ${CHAI_DIR}/lib/libcamp.a \" \ +--with-umpire-libs=umpire \ +--enable-gpu-aware-mpi \ +--with-MPI-include=${MPI_INCLUDE_DIR}" ) endif() if( CMAKE_HOST_APPLE ) @@ -879,6 +902,7 @@ if( ENABLE_HYPRE ) ${HYPRE_SUPERLU_FLAGS} \ ${HYPRE_OPENMP_FLAG} \ ${HYPRE_CUDA_FLAGS} \ + ${HYPRE_HIP_FLAGS} \ ${HYPRE_CALIPER_FLAGS}\n") ExternalProject_Add( hypre From 507d72de81401e8e877bc9e0983bca48a4c47969 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Sat, 14 Dec 2024 19:35:14 -0500 Subject: [PATCH 3/8] Update hypre to v2.32.0-11-g677e01950 --- CMakeLists.txt | 2 +- tplMirror/hypre-v2.32.0-11-g677e01950.tar.gz | 3 +++ tplMirror/hypre-v2.32.0-4-gc893886d1.tar.gz | 3 --- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 tplMirror/hypre-v2.32.0-11-g677e01950.tar.gz delete mode 100644 tplMirror/hypre-v2.32.0-4-gc893886d1.tar.gz diff --git a/CMakeLists.txt b/CMakeLists.txt index 2aaf6621..e5ccf8de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -805,7 +805,7 @@ endif() if( ENABLE_HYPRE ) set( HYPRE_DIR "${CMAKE_INSTALL_PREFIX}/hypre" ) - set( HYPRE_URL "${TPL_MIRROR_DIR}/hypre-v2.32.0-4-gc893886d1.tar.gz" ) + set( HYPRE_URL "${TPL_MIRROR_DIR}/hypre-v2.32.0-11-g677e01950.tar.gz" ) set( HYPRE_DEPENDS "" ) diff --git a/tplMirror/hypre-v2.32.0-11-g677e01950.tar.gz b/tplMirror/hypre-v2.32.0-11-g677e01950.tar.gz new file mode 100644 index 00000000..373bbf1b --- /dev/null +++ b/tplMirror/hypre-v2.32.0-11-g677e01950.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaf823ea2decd34bb376952cdbd2e55b004f453170976a7483f67871c298d1c5 +size 4380965 diff --git a/tplMirror/hypre-v2.32.0-4-gc893886d1.tar.gz b/tplMirror/hypre-v2.32.0-4-gc893886d1.tar.gz deleted file mode 100644 index 56e8439c..00000000 --- a/tplMirror/hypre-v2.32.0-4-gc893886d1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39b47555ef21be9d1304c92bd510c9b3362ec2482311456e83cc5038f69ecef6 -size 4398725 From 9c494b47afe1b801f267a8d049aba10f8009e6c4 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Sat, 14 Dec 2024 19:35:12 -0800 Subject: [PATCH 4/8] HIP_ROOT_DIR -> ROCM_PATH --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f267d94..107991d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -764,7 +764,7 @@ if( ENABLE_MPI ) set(SUPERLU_CXX_FLAGS "${CXX_FLAGS_NO_WARNINGS}") set(SUPERLU_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}") endif() - + set(PARMETIS_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/parmetis/include;${CMAKE_INSTALL_PREFIX}/metis/include) set(PARMETIS_LIBRARIES ${CMAKE_INSTALL_PREFIX}/parmetis/lib/libparmetis.a;${CMAKE_INSTALL_PREFIX}/metis/lib/libmetis.a) @@ -861,7 +861,7 @@ if( ENABLE_HYPRE ) elseif( ENABLE_HYPRE_DEVICE STREQUAL "HIP" ) list( APPEND HYPRE_DEPENDS chai ) set( HYPRE_HIP_FLAGS "\ -ROCM_PATH=${HIP_ROOT_DIR} \ +ROCM_PATH=${ROCM_PATH} \ --enable-shared \ --with-hip \ --enable-rocblas \ From 934da3ad2c2ef75ea7e0af686d6922f8aa4b0c5d Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Sat, 14 Dec 2024 19:54:28 -0800 Subject: [PATCH 5/8] Caliper: add WITH_ROCM --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 107991d0..3471a553 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -500,6 +500,7 @@ if (ENABLE_CALIPER) -D adiak_DIR:STRING=${ADIAK_DIR}/lib/cmake/adiak/ -D WITH_CUPTI=${CALIPER_WITH_CUPTI} -D WITH_NVPROF=${ENABLE_CUDA} + -D WITH_ROCM=${ENABLE_HIP} ) list(APPEND build_list caliper adiak) From 8f9ca2061f1da5ef856ca856b3db49d6e7bac0d8 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Sat, 14 Dec 2024 20:45:00 -0800 Subject: [PATCH 6/8] Fix hypre linking --- CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3471a553..0652dd43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -828,7 +828,12 @@ if( ENABLE_HYPRE ) set( HYPRE_C_COMPILER ${MPI_C_COMPILER} ) set( HYPRE_CXX_COMPILER ${MPI_CXX_COMPILER} ) set( HYPRE_Fortran_COMPILER ${MPI_Fortran_COMPILER} ) - set( HYPRE_SUPERLU_LIBS "${SUPERLU_DIR}/lib/libsuperlu_dist.a ${PARMETIS_DIR}/lib/libparmetis.a ${METIS_DIR}/lib/libmetis.a -lstdc++" ) + if( BUILD_SHARED_LIBS ) + set( HYPRE_SUPERLU_LIBS "${SUPERLU_DIR}/lib64/libsuperlu_dist.so" ) + else() + set( HYPRE_SUPERLU_LIBS "${SUPERLU_DIR}/lib64/libsuperlu_dist.a" ) + endif() + set( HYPRE_SUPERLU_LIBS "${HYPRE_SUPERLU_LIBS} ${PARMETIS_DIR}/lib/libparmetis.a ${METIS_DIR}/lib/libmetis.a -lstdc++" ) if( ENABLE_OPENMP ) set( HYPRE_SUPERLU_LIBS "${HYPRE_SUPERLU_LIBS} ${OpenMP_C_FLAGS}" ) # Sergey: why is this needed? endif() @@ -870,7 +875,7 @@ ROCM_PATH=${ROCM_PATH} \ --with-gpu-arch=${HIP_ARCH} \ --with-umpire \ --with-umpire-include=${CHAI_DIR}/include \ ---with-umpire-lib=\"${CHAI_DIR}/lib64 -Wl,-rpath,${CHAI_DIR}/lib64 ${CHAI_DIR}/lib/libcamp.a \" \ +--with-umpire-lib=\"-L${CHAI_DIR}/lib64 -Wl,-rpath,${CHAI_DIR}/lib64 ${CHAI_DIR}/lib/libcamp.a \" \ --with-umpire-libs=umpire \ --enable-gpu-aware-mpi \ --with-MPI-include=${MPI_INCLUDE_DIR}" ) From 48b510895312ad9cf0f7cdf8265f1e4d8186049f Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Wed, 18 Dec 2024 22:45:23 -0800 Subject: [PATCH 7/8] HIP_ARCH -> CMAKE_HIP_ARCHITECTURES --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0652dd43..f971bbf1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -374,7 +374,7 @@ ExternalProject_Add( raja -D RAJA_ENABLE_HIP=${ENABLE_HIP} -D CMAKE_HIP_COMPILER=${HIP_HIPCC_EXECUTABLE} -D HIP_ROOT_DIR=${HIP_ROOT_DIR} - -D CMAKE_HIP_ARCHITECTURES=${HIP_ARCH} + -D CMAKE_HIP_ARCHITECTURES=${CMAKE_HIP_ARCHITECTURES} ) list(APPEND build_list raja ) @@ -424,7 +424,7 @@ ExternalProject_Add( chai -D CHAI_ENABLE_HIP=${ENABLE_HIP} -D CMAKE_HIP_COMPILER=${HIP_HIPCC_EXECUTABLE} -D HIP_ROOT_DIR=${HIP_ROOT_DIR} - -D CMAKE_HIP_ARCHITECTURES=${HIP_ARCH} + -D CMAKE_HIP_ARCHITECTURES=${CMAKE_HIP_ARCHITECTURES} ) list(APPEND build_list chai ) @@ -872,7 +872,7 @@ ROCM_PATH=${ROCM_PATH} \ --with-hip \ --enable-rocblas \ --enable-rocsparse \ ---with-gpu-arch=${HIP_ARCH} \ +--with-gpu-arch=${CMAKE_HIP_ARCHITECTURES} \ --with-umpire \ --with-umpire-include=${CHAI_DIR}/include \ --with-umpire-lib=\"-L${CHAI_DIR}/lib64 -Wl,-rpath,${CHAI_DIR}/lib64 ${CHAI_DIR}/lib/libcamp.a \" \ From 34b1a167a2dae5aa3b6aff5916796e3e171f8de4 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Fri, 20 Dec 2024 19:40:41 -0800 Subject: [PATCH 8/8] Enable umpire tools --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f971bbf1..050c998e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -420,6 +420,7 @@ ExternalProject_Add( chai -D CHAI_ENABLE_RAJA_PLUGIN=ON -D RAJA_DIR=${RAJA_DIR}/lib/cmake/raja -D UMPIRE_ENABLE_C=ON + -D UMPIRE_ENABLE_TOOLS=ON -D ENABLE_HIP=${ENABLE_HIP} -D CHAI_ENABLE_HIP=${ENABLE_HIP} -D CMAKE_HIP_COMPILER=${HIP_HIPCC_EXECUTABLE}