From ac0a8422656cc309a76e0d205d7b24099daaabad Mon Sep 17 00:00:00 2001 From: Ethan Stewart Date: Thu, 4 Apr 2024 09:31:47 -0500 Subject: [PATCH 1/4] Add clang LLVM_DEFAULT_TARGET_TRIPLE to find new location of -lomp An upstream llvm change enables LLVM_ENABLE_PER_TARGET_RUNTIME_DIR by default for the openmp build. This installs the openmp libraries into /opt/rocm-ver/llvm/lib/x86_64-unknown-linux-gnu instead of /opt/rocm-ver/llvm/lib. Currenty, hipBLAS only looks in /lib. Prepend lib/x86_64-unknown-linux-gnu to -L and --rpath to avoid linker error. --- clients/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 7cad5e13b..637165cdc 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -118,11 +118,23 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) # if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED find_package(OpenMP) + execute_process ( + COMMAND bash -c "${HIP_CLANG_ROOT}/bin/clang --version | grep -oP '(?<=Target: ).+' | tr -d '\n'" + OUTPUT_VARIABLE LLVM_DEFAULT_TARGET_TRIPLE) + if (TARGET OpenMP::OpenMP_CXX) set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX") if(HIP_PLATFORM STREQUAL amd) + if (NOT WIN32) + if(LLVM_DEFAULT_TARGET_TRIPLE) + list( APPEND COMMON_LINK_LIBS "-L\"${HIP_CLANG_ROOT}/lib/${LLVM_DEFAULT_TARGET_TRIPLE}\"") + endif() + endif() list( APPEND COMMON_LINK_LIBS "-L\"${HIP_CLANG_ROOT}/lib\"") if (NOT WIN32) + if(LLVM_DEFAULT_TARGET_TRIPLE) + list( APPEND COMMON_LINK_LIBS "-Wl,-rpath=${HIP_CLANG_ROOT}/lib/${LLVM_DEFAULT_TARGET_TRIPLE}") + endif() list( APPEND COMMON_LINK_LIBS "-Wl,-rpath=${HIP_CLANG_ROOT}/lib -lomp") else() list( APPEND COMMON_LINK_LIBS "libomp") From 0853a477799d6d2ad193bc641502059166efff19 Mon Sep 17 00:00:00 2001 From: Ethan Stewart Date: Thu, 4 Apr 2024 09:45:01 -0500 Subject: [PATCH 2/4] Move clang version query inside not windows check --- clients/CMakeLists.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 637165cdc..128b4aada 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -118,14 +118,13 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) # if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED find_package(OpenMP) - execute_process ( - COMMAND bash -c "${HIP_CLANG_ROOT}/bin/clang --version | grep -oP '(?<=Target: ).+' | tr -d '\n'" - OUTPUT_VARIABLE LLVM_DEFAULT_TARGET_TRIPLE) - if (TARGET OpenMP::OpenMP_CXX) set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX") if(HIP_PLATFORM STREQUAL amd) if (NOT WIN32) + execute_process ( + COMMAND bash -c "${HIP_CLANG_ROOT}/bin/clang --version | grep -oP '(?<=Target: ).+' | tr -d '\n'" + OUTPUT_VARIABLE LLVM_DEFAULT_TARGET_TRIPLE) if(LLVM_DEFAULT_TARGET_TRIPLE) list( APPEND COMMON_LINK_LIBS "-L\"${HIP_CLANG_ROOT}/lib/${LLVM_DEFAULT_TARGET_TRIPLE}\"") endif() From 7de7f26afd1387caea710e63f4209d544a212db1 Mon Sep 17 00:00:00 2001 From: Ethan Stewart Date: Thu, 4 Apr 2024 10:18:45 -0500 Subject: [PATCH 3/4] Use amdclang instead of clang to query target --- clients/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 128b4aada..16d906a77 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -123,7 +123,7 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) if(HIP_PLATFORM STREQUAL amd) if (NOT WIN32) execute_process ( - COMMAND bash -c "${HIP_CLANG_ROOT}/bin/clang --version | grep -oP '(?<=Target: ).+' | tr -d '\n'" + COMMAND bash -c "${HIP_CLANG_ROOT}/bin/amdclang --version | grep -oP '(?<=Target: ).+' | tr -d '\n'" OUTPUT_VARIABLE LLVM_DEFAULT_TARGET_TRIPLE) if(LLVM_DEFAULT_TARGET_TRIPLE) list( APPEND COMMON_LINK_LIBS "-L\"${HIP_CLANG_ROOT}/lib/${LLVM_DEFAULT_TARGET_TRIPLE}\"") From f55f2407291ccc1c4a48205e7df6e6c84f8f3b0c Mon Sep 17 00:00:00 2001 From: Ethan Stewart Date: Tue, 23 Apr 2024 11:53:06 -0500 Subject: [PATCH 4/4] Use OUTPUT_STRIP_TRAILING_WHITESPACE instead of translate --- clients/CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 16d906a77..9d60c43fd 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -122,9 +122,11 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX") if(HIP_PLATFORM STREQUAL amd) if (NOT WIN32) - execute_process ( - COMMAND bash -c "${HIP_CLANG_ROOT}/bin/amdclang --version | grep -oP '(?<=Target: ).+' | tr -d '\n'" - OUTPUT_VARIABLE LLVM_DEFAULT_TARGET_TRIPLE) + execute_process( + OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND bash -c "${HIP_CLANG_ROOT}/bin/amdclang --version | grep -oP '(?<=Target: ).+'" + OUTPUT_VARIABLE LLVM_DEFAULT_TARGET_TRIPLE + ) if(LLVM_DEFAULT_TARGET_TRIPLE) list( APPEND COMMON_LINK_LIBS "-L\"${HIP_CLANG_ROOT}/lib/${LLVM_DEFAULT_TARGET_TRIPLE}\"") endif()