From 99fbda3721c2c21d654e542cbc8b3c4c9afcdf92 Mon Sep 17 00:00:00 2001 From: Marcel Koch Date: Fri, 21 Jul 2023 17:59:18 +0200 Subject: [PATCH 1/3] adds check that downstream compiler match the ginkgo compiler --- cmake/GinkgoConfig.cmake.in | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/cmake/GinkgoConfig.cmake.in b/cmake/GinkgoConfig.cmake.in index 44aaf34fc3f..5194d76b5af 100644 --- a/cmake/GinkgoConfig.cmake.in +++ b/cmake/GinkgoConfig.cmake.in @@ -63,7 +63,6 @@ set(GINKGO_JACOBI_FULL_OPTIMIZATIONS @GINKGO_JACOBI_FULL_OPTIMIZATIONS@) set(GINKGO_CUDA_ARCHITECTURES "@GINKGO_CUDA_ARCHITECTURES@") set(GINKGO_CUDA_DEFAULT_HOST_COMPILER @GINKGO_CUDA_DEFAULT_HOST_COMPILER@) -set(GINKGO_CUDA_HOST_COMPILER "@CMAKE_CUDA_HOST_COMPILER@") set(GINKGO_CUDA_ARCH_FLAGS "@GINKGO_CUDA_ARCH_FLAGS@") set(GINKGO_HIP_COMPILER_FLAGS "@GINKGO_HIP_COMPILER_FLAGS@") @@ -91,6 +90,15 @@ set(GINKGO_HAVE_HWLOC @GINKGO_HAVE_HWLOC@) set(GINKGO_HAVE_ROCTX @GINKGO_HAVE_ROCTX@) +# Ginkgo compiler information +set(GINKGO_CXX_COMPILER "@CMAKE_CXX_COMPILER@") +set(GINKGO_CXX_COMPILER_SHORT "@CMAKE_CXX_COMPILER_ID@:@CMAKE_CXX_COMPILER_VERSION@") +set(GINKGO_CUDA_COMPILER "@CMAKE_CUDA_COMPILER@") +set(GINKGO_CUDA_COMPILER_SHORT "@CMAKE_CUDA_COMPILER_ID@:@CMAKE_CUDA_COMPILER_VERSION@") +set(GINKGO_CUDA_HOST_COMPILER "@CMAKE_CUDA_HOST_COMPILER@") +set(GINKGO_CUDA_HOST_COMPILER_SHORT "") # dummy value to stay consistent +set(GINKGO_HIP_COMPILER "@HIP_HIPCC@") + # Ginkgo installation configuration set(GINKGO_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@") set(GINKGO_INSTALL_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@") @@ -107,7 +115,6 @@ if(GINKGO_BUILD_HIP) endif() list(APPEND CMAKE_PREFIX_PATH "${GINKGO_INSTALL_PREFIX}") - set(GINKGO_INTERFACE_LINK_LIBRARIES "@GINKGO_INTERFACE_LINK_LIBRARIES@") set(GINKGO_INTERFACE_LINK_FLAGS "@GINKGO_INTERFACE_LINK_FLAGS@") set(GINKGO_INTERFACE_CXX_FLAGS "@GINKGO_INTERFACE_CXX_FLAGS@") @@ -207,4 +214,26 @@ if((NOT GINKGO_BUILD_SHARED_LIBS) AND GINKGO_HAVE_TAU) find_package(PerfStubs REQUIRED) endif() +# Check that the same compilers as for Ginkgo are used +function(_ginkgo_check_compiler lang) + if(NOT ${CMAKE_${lang}_COMPILER} STREQUAL ${GINKGO_${lang}_COMPILER}) + set(_compiler_short "${CMAKE_${lang}_COMPILER_ID}:${CMAKE_${lang}_COMPILER_VERSION}") + if(NOT _compiler_short STREQUAL ${GINKGO_${lang}_COMPILER_SHORT}) + message(WARNING "The currently used ${lang} compiler: ${CMAKE_${lang}_COMPILER} does not match the compiler used to " + "build Ginkgo: ${GINKGO_${lang}_COMPILER}. It is encouraged to use the same compiler as Ginkgo to prevent ABI mismatch.") + endif() + endif() +endfunction() +_ginkgo_check_compiler(CXX) +if(GINKGO_BUILD_CUDA) + _ginkgo_check_compiler(CUDA) +endif() +if(GINKGO_BUILD_HIP) + _ginkgo_check_compiler(HIP) + if(NOT HIP_HIPCC STREQUAL ${GINKGO_HIP_COMPILER}) + message(WARNING "The currently used HIP compiler: ${HIP_HIPCC} does not match the compiler used to " + "build Ginkgo: ${GINKGO_HIP_COMPILER}. It is encouraged to use the same compiler as Ginkgo to prevent ABI mismatch.") + endif() +endif() + include(${CMAKE_CURRENT_LIST_DIR}/GinkgoTargets.cmake) From 6e52c9dcda3bb29616f7f93675cfae3ec7c3860c Mon Sep 17 00:00:00 2001 From: Marcel Koch Date: Mon, 24 Jul 2023 10:29:11 +0200 Subject: [PATCH 2/3] don't check hip compiler until cmake update --- cmake/GinkgoConfig.cmake.in | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cmake/GinkgoConfig.cmake.in b/cmake/GinkgoConfig.cmake.in index 5194d76b5af..ea251a64b86 100644 --- a/cmake/GinkgoConfig.cmake.in +++ b/cmake/GinkgoConfig.cmake.in @@ -97,7 +97,6 @@ set(GINKGO_CUDA_COMPILER "@CMAKE_CUDA_COMPILER@") set(GINKGO_CUDA_COMPILER_SHORT "@CMAKE_CUDA_COMPILER_ID@:@CMAKE_CUDA_COMPILER_VERSION@") set(GINKGO_CUDA_HOST_COMPILER "@CMAKE_CUDA_HOST_COMPILER@") set(GINKGO_CUDA_HOST_COMPILER_SHORT "") # dummy value to stay consistent -set(GINKGO_HIP_COMPILER "@HIP_HIPCC@") # Ginkgo installation configuration set(GINKGO_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@") @@ -228,12 +227,5 @@ _ginkgo_check_compiler(CXX) if(GINKGO_BUILD_CUDA) _ginkgo_check_compiler(CUDA) endif() -if(GINKGO_BUILD_HIP) - _ginkgo_check_compiler(HIP) - if(NOT HIP_HIPCC STREQUAL ${GINKGO_HIP_COMPILER}) - message(WARNING "The currently used HIP compiler: ${HIP_HIPCC} does not match the compiler used to " - "build Ginkgo: ${GINKGO_HIP_COMPILER}. It is encouraged to use the same compiler as Ginkgo to prevent ABI mismatch.") - endif() -endif() include(${CMAKE_CURRENT_LIST_DIR}/GinkgoTargets.cmake) From 286c106e27d2c02fc6d6f9596bc43d9151717f57 Mon Sep 17 00:00:00 2001 From: Marcel Koch Date: Mon, 24 Jul 2023 10:29:23 +0200 Subject: [PATCH 3/3] also check cuda host compiler --- cmake/GinkgoConfig.cmake.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/GinkgoConfig.cmake.in b/cmake/GinkgoConfig.cmake.in index ea251a64b86..fe2ac05d7e5 100644 --- a/cmake/GinkgoConfig.cmake.in +++ b/cmake/GinkgoConfig.cmake.in @@ -217,7 +217,7 @@ endif() function(_ginkgo_check_compiler lang) if(NOT ${CMAKE_${lang}_COMPILER} STREQUAL ${GINKGO_${lang}_COMPILER}) set(_compiler_short "${CMAKE_${lang}_COMPILER_ID}:${CMAKE_${lang}_COMPILER_VERSION}") - if(NOT _compiler_short STREQUAL ${GINKGO_${lang}_COMPILER_SHORT}) + if(NOT _compiler_short STREQUAL "${GINKGO_${lang}_COMPILER_SHORT}") message(WARNING "The currently used ${lang} compiler: ${CMAKE_${lang}_COMPILER} does not match the compiler used to " "build Ginkgo: ${GINKGO_${lang}_COMPILER}. It is encouraged to use the same compiler as Ginkgo to prevent ABI mismatch.") endif() @@ -226,6 +226,7 @@ endfunction() _ginkgo_check_compiler(CXX) if(GINKGO_BUILD_CUDA) _ginkgo_check_compiler(CUDA) + _ginkgo_check_compiler(CUDA_HOST) endif() include(${CMAKE_CURRENT_LIST_DIR}/GinkgoTargets.cmake)