Skip to content

Commit

Permalink
[Clang] Remove direct linking of offloading runtimes from the arch tools
Browse files Browse the repository at this point in the history
The tools `amdgpu-arch` and `nvptx-arch` are used to query the supported
GPUs on a system to implement features like `--offload-arch=native` as
well as generally being useful for setting up tests. However, we
currently directly link these if they are availible. This patch removes
this because it causes many problems on the user not having the libaries
present or misconfigured at build time. Since these are built
unconditionally we shoudl keep the dependencies away from clang.

Fixes #62784

Reviewed By: ye-luo

Differential Revision: https://reviews.llvm.org/D150807
  • Loading branch information
jhuber6 committed May 17, 2023
1 parent 44096e6 commit 66da9ec
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 38 deletions.
13 changes: 0 additions & 13 deletions clang/tools/amdgpu-arch/AMDGPUArch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ static void PrintVersion(raw_ostream &OS) {
OS << clang::getClangToolFullVersion("amdgpu-arch") << '\n';
}

#if DYNAMIC_HSA
typedef enum {
HSA_STATUS_SUCCESS = 0x0,
} hsa_status_t;
Expand Down Expand Up @@ -80,18 +79,6 @@ llvm::Error loadHSA() {
#undef DYNAMIC_INIT
return llvm::Error::success();
}
#else

#if defined(__has_include)
#if __has_include("hsa/hsa.h")
#include "hsa/hsa.h"
#elif __has_include("hsa.h")
#include "hsa.h"
#endif
#endif

llvm::Error loadHSA() { return llvm::Error::success(); }
#endif

static hsa_status_t iterateAgentsCallback(hsa_agent_t Agent, void *Data) {
hsa_device_type_t DeviceType;
Expand Down
10 changes: 1 addition & 9 deletions clang/tools/amdgpu-arch/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,4 @@ set(LLVM_LINK_COMPONENTS Support)

add_clang_tool(amdgpu-arch AMDGPUArch.cpp)

# If we find the HSA runtime we link with it directly.
find_package(hsa-runtime64 QUIET 1.2.0 HINTS ${CMAKE_INSTALL_PREFIX} PATHS /opt/rocm)
if(hsa-runtime64_FOUND AND NOT (LLVM_BUILD_32_BITS OR CMAKE_SIZEOF_VOID_P EQUAL 4))
set_target_properties(amdgpu-arch PROPERTIES INSTALL_RPATH_USE_LINK_PATH ON)
target_link_libraries(amdgpu-arch PRIVATE hsa-runtime64::hsa-runtime64 clangBasic)
else()
target_compile_definitions(amdgpu-arch PRIVATE "DYNAMIC_HSA")
target_link_libraries(amdgpu-arch PRIVATE clangBasic)
endif()
target_link_libraries(amdgpu-arch PRIVATE clangBasic)
10 changes: 1 addition & 9 deletions clang/tools/nvptx-arch/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,4 @@
set(LLVM_LINK_COMPONENTS Support)
add_clang_tool(nvptx-arch NVPTXArch.cpp)

find_package(CUDAToolkit QUIET)

# If we found the CUDA library directly we just dynamically link against it.
if(CUDAToolkit_FOUND AND NOT (LLVM_BUILD_32_BITS OR CMAKE_SIZEOF_VOID_P EQUAL 4))
target_link_libraries(nvptx-arch PRIVATE CUDA::cuda_driver clangBasic)
else()
target_compile_definitions(nvptx-arch PRIVATE "DYNAMIC_CUDA")
target_link_libraries(nvptx-arch PRIVATE clangBasic)
endif()
target_link_libraries(nvptx-arch PRIVATE clangBasic)
7 changes: 0 additions & 7 deletions clang/tools/nvptx-arch/NVPTXArch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ static void PrintVersion(raw_ostream &OS) {
// and -help) will be hidden.
static cl::OptionCategory NVPTXArchCategory("nvptx-arch options");

#if DYNAMIC_CUDA
typedef enum cudaError_enum {
CUDA_SUCCESS = 0,
CUDA_ERROR_NO_DEVICE = 100,
Expand Down Expand Up @@ -75,12 +74,6 @@ llvm::Error loadCUDA() {
#undef DYNAMIC_INIT
return llvm::Error::success();
}
#else

#include "cuda.h"
llvm::Error loadCUDA() { return llvm::Error::success(); }

#endif

static int handleError(CUresult Err) {
const char *ErrStr = nullptr;
Expand Down

0 comments on commit 66da9ec

Please sign in to comment.