From 7518a14f6db51c90830fcdf5823cfb7dfb653905 Mon Sep 17 00:00:00 2001 From: Johannes Keller Date: Wed, 10 Dec 2025 12:41:28 +0100 Subject: [PATCH 1/4] BuildPDAF: Support NVHPC toolchain for PDAF --- cmake/BuildPDAF.cmake | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/cmake/BuildPDAF.cmake b/cmake/BuildPDAF.cmake index 50dc58a..e358249 100644 --- a/cmake/BuildPDAF.cmake +++ b/cmake/BuildPDAF.cmake @@ -73,6 +73,8 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") list(APPEND PDAF_LINK_LIBS "-mkl") list(APPEND PDAF_LINK_LIBS "${LAPACK_LIBRARIES}") message(WARNING "LAPACK_LIBRARIES: ${LAPACK_LIBRARIES}") +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") + # MKL command else() message(FATAL_ERROR "Unsupported CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") endif() @@ -147,6 +149,22 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") list(APPEND PDAF_FOPT "-fallow-argument-mismatch") list(APPEND PDAF_FOPT "-fcommon") +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") + + # Using NVHPC + if (CMAKE_BUILD_TYPE STREQUAL "RELEASE") + # Release optimization flags + list(APPEND PDAF_FOPT "-Ofast") + elseif (CMAKE_BUILD_TYPE STREQUAL "DEBUG") + # Debug optimization flags + list(APPEND PDAF_FOPT "-O0") + list(APPEND PDAF_FOPT "-g") + else() + message(FATAL_ERROR "Unsupported CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") + endif() + + list(APPEND PDAF_FOPT "-fPIC") + else() message(FATAL_ERROR "Unsupported CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") endif() @@ -195,6 +213,22 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") list(APPEND PDAF_COPT "-mcmodel=large") list(APPEND PDAF_COPT "-fcommon") +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") + + # Using NVHPC + if (CMAKE_BUILD_TYPE STREQUAL "RELEASE") + # Release optimization flags + list(APPEND PDAF_COPT "-Ofast") + elseif (CMAKE_BUILD_TYPE STREQUAL "DEBUG") + # Debug optimization flags + list(APPEND PDAF_COPT "-O0") + list(APPEND PDAF_COPT "-g") + else() + message(FATAL_ERROR "Unsupported CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") + endif() + + list(APPEND PDAF_COPT "-fPIC") + else() message(FATAL_ERROR "Unsupported CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") endif() @@ -213,6 +247,10 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") list(APPEND PDAF_DOUBLEPRECISION "-fdefault-real-8") +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") + + # doubleprecision flag!? + else() message(FATAL_ERROR "Unsupported CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") endif() From 906c942a197afc6f8fb73799717996f8bd775d35 Mon Sep 17 00:00:00 2001 From: Johannes Keller Date: Wed, 10 Dec 2025 15:07:33 +0100 Subject: [PATCH 2/4] update "models/pdaf" to tsmp-pdaf-patched-isnan --- .gitmodules | 2 +- models/pdaf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index c705552..e826c55 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,7 +13,7 @@ [submodule "models/pdaf"] path = models/pdaf url = https://github.com/HPSCTerrSys/pdaf.git - branch = tsmp-pdaf-patched + branch = tsmp-pdaf-patched-isnan [submodule "models/eCLM"] path = models/eCLM url = https://github.com/HPSCTerrSys/eCLM.git diff --git a/models/pdaf b/models/pdaf index 8f8cc5c..3015c1d 160000 --- a/models/pdaf +++ b/models/pdaf @@ -1 +1 @@ -Subproject commit 8f8cc5cb7502abdb4fd89f91807a177c9f0cb8b9 +Subproject commit 3015c1d7436130d78ae6403b611ff1bcc6188440 From f8304c8cb3d20e02c50d62bee2dfbc3103fbdd86 Mon Sep 17 00:00:00 2001 From: Johannes Keller Date: Wed, 10 Dec 2025 23:26:27 +0100 Subject: [PATCH 3/4] LAPACK and DOUBLEPRECISION flags --- cmake/BuildPDAF.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmake/BuildPDAF.cmake b/cmake/BuildPDAF.cmake index e358249..499f1d1 100644 --- a/cmake/BuildPDAF.cmake +++ b/cmake/BuildPDAF.cmake @@ -24,6 +24,7 @@ endif() # LAPACK is required # For eCLM-PDAF, this setting has to be consistent with MKL/LAPACK # loading in `eCLM/src/clm5/CMakelists.txt` +# https://cmake.org/cmake/help/latest/module/FindLAPACK.html find_package(LAPACK REQUIRED) # OpenMP is required @@ -75,6 +76,10 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") message(WARNING "LAPACK_LIBRARIES: ${LAPACK_LIBRARIES}") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") # MKL command + list(APPEND PDAF_LINK_LIBS "${LAPACK_LIBRARIES}") + list(APPEND PDAF_LINK_LIBS "${LAPACK_LINKER_FLAGS}") + message(STATUS "LAPACK_LIBRARIES: ${LAPACK_LIBRARIES}") + message(STATUS "LAPACK_LINKER_FLAGS: ${LAPACK_LINKER_FLAGS}") else() message(FATAL_ERROR "Unsupported CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") endif() @@ -250,6 +255,7 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") # doubleprecision flag!? + list(APPEND PDAF_DOUBLEPRECISION "-r8") else() message(FATAL_ERROR "Unsupported CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") From d695e7237f197ebe347636b7f3fd39b3047544a0 Mon Sep 17 00:00:00 2001 From: Johannes Keller Date: Thu, 11 Dec 2025 12:53:59 +0100 Subject: [PATCH 4/4] update "models/pdaf" to tsmp-pdaf-patched --- .gitmodules | 2 +- models/pdaf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index e826c55..c705552 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,7 +13,7 @@ [submodule "models/pdaf"] path = models/pdaf url = https://github.com/HPSCTerrSys/pdaf.git - branch = tsmp-pdaf-patched-isnan + branch = tsmp-pdaf-patched [submodule "models/eCLM"] path = models/eCLM url = https://github.com/HPSCTerrSys/eCLM.git diff --git a/models/pdaf b/models/pdaf index 3015c1d..3c9cef3 160000 --- a/models/pdaf +++ b/models/pdaf @@ -1 +1 @@ -Subproject commit 3015c1d7436130d78ae6403b611ff1bcc6188440 +Subproject commit 3c9cef36c088787f541f354ee39d63f4dac6e9dc