Skip to content

Commit 9f5c6dc

Browse files
committed
[libc] Search for the CUDA patch explicitly when testing
The packaged version of the `libc` library does not depend on the CUDA installation because it only uses `clang` and emits LLVM-IR. However, for testing we directly need the CUDA toolkit to emit and execute the files. This patch explicitly passes `--cuda-path` to the relevant compilations for NVPTX testing. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D147653
1 parent e787ef8 commit 9f5c6dc

File tree

5 files changed

+15
-1
lines changed

5 files changed

+15
-1
lines changed

libc/cmake/modules/LLVMLibCObjectRules.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,9 @@ function(_build_gpu_objects fq_target_name internal_target_name)
195195
if(LIBC_GPU_TARGET_ARCHITECTURE_IS_AMDGPU)
196196
target_compile_options(${internal_target_name} PRIVATE -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -flto)
197197
elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
198-
target_compile_options(${internal_target_name} PRIVATE -march=${LIBC_GPU_TARGET_ARCHITECTURE})
198+
target_compile_options(${internal_target_name} PRIVATE
199+
-march=${LIBC_GPU_TARGET_ARCHITECTURE}
200+
--cuda-path=${LIBC_CUDA_ROOT})
199201
endif()
200202
target_include_directories(${internal_target_name} PRIVATE ${include_dirs})
201203
if(full_deps_list)

libc/cmake/modules/LLVMLibCTestRules.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,7 @@ function(add_integration_test test_name)
507507
--target=${LIBC_GPU_TARGET_TRIPLE})
508508
elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
509509
target_compile_options(${fq_build_target_name} PRIVATE
510+
--cuda-path=${LIBC_CUDA_ROOT}
510511
-march=${LIBC_GPU_TARGET_ARCHITECTURE}
511512
--target=${LIBC_GPU_TARGET_TRIPLE})
512513
endif()

libc/cmake/modules/prepare_libc_gpu_build.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,11 @@ elseif("${gpu_test_architecture}" IN_LIST all_nvptx_architectures)
9898
else()
9999
message(FATAL_ERROR "Unknown GPU architecture '${gpu_test_architecture}'")
100100
endif()
101+
102+
if(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
103+
find_package(CUDAToolkit QUIET)
104+
if(CUDAToolkit_FOUND)
105+
get_filename_component(LIBC_CUDA_ROOT "${CUDAToolkit_BIN_DIR}" DIRECTORY ABSOLUTE)
106+
message(WARNING ${LIBC_CUDA_ROOT})
107+
endif()
108+
endif()

libc/startup/gpu/nvptx/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ add_startup_object(
1010
-nogpulib # Do not include any GPU vendor libraries.
1111
-march=${LIBC_GPU_TARGET_ARCHITECTURE}
1212
--target=${LIBC_GPU_TARGET_TRIPLE}
13+
--cuda-path=${LIBC_CUDA_ROOT}
1314
NO_GPU_BUNDLE # Compile this file directly without special GPU handling.
1415
)
1516
get_fq_target_name(crt1 fq_name)
@@ -19,4 +20,5 @@ target_link_libraries(${fq_name}
1920
PUBLIC
2021
"-march=${LIBC_GPU_TARGET_ARCHITECTURE}"
2122
"--target=${LIBC_GPU_TARGET_TRIPLE}"
23+
"--cuda-path=${LIBC_CUDA_ROOT}"
2224
)

libc/test/IntegrationTest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
88
set(TEST_COMPILE_FLAGS
99
-march=${LIBC_GPU_TARGET_ARCHITECTURE}
1010
--target=${LIBC_GPU_TARGET_TRIPLE}
11+
--cuda-path=${LIBC_CUDA_ROOT}
1112
)
1213
endif()
1314

0 commit comments

Comments
 (0)