From b60c916d54e40fd569bd550215350d525230e14c Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Thu, 11 Sep 2025 21:09:42 -0400 Subject: [PATCH 1/4] Fix dubious find_package logic in test/generator Fixes #8790 --- test/generator/CMakeLists.txt | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/test/generator/CMakeLists.txt b/test/generator/CMakeLists.txt index 959ba081c099..f9f7b6feb5e3 100644 --- a/test/generator/CMakeLists.txt +++ b/test/generator/CMakeLists.txt @@ -235,13 +235,17 @@ function(_add_one_aot_test TARGET) target_compile_definitions("${TARGET}" PRIVATE WITH_DAWN_NATIVE) endif () endif () - if ("NVPTX" IN_LIST Halide_LLVM_COMPONENTS) - if (Halide_TARGET MATCHES "cuda") - target_link_libraries("${TARGET}" PRIVATE CUDA::cuda_driver CUDA::cudart) + if (Halide_TARGET MATCHES "cuda") + if (NOT TARGET CUDA::cuda_driver) + find_package(CUDAToolkit REQUIRED) endif () - if (Halide_TARGET MATCHES "opencl") - target_link_libraries("${TARGET}" PRIVATE OpenCL::OpenCL) + target_link_libraries("${TARGET}" PRIVATE CUDA::cuda_driver CUDA::cudart) + endif () + if (Halide_TARGET MATCHES "opencl") + if (NOT TARGET OpenCL::OpenCL) + find_package(OpenCL REQUIRED) endif () + target_link_libraries("${TARGET}" PRIVATE OpenCL::OpenCL) endif () add_halide_test("${TARGET}" GROUPS generator ${args_GROUPS}) endfunction() @@ -312,15 +316,6 @@ function(_add_halide_aot_tests NAME) endif () endfunction() -if ("NVPTX" IN_LIST Halide_LLVM_COMPONENTS) - if (Halide_TARGET MATCHES "cuda") - find_package(CUDAToolkit REQUIRED) - endif () - if (Halide_TARGET MATCHES "opencl") - find_package(OpenCL REQUIRED) - endif () -endif () - ## # Create targets for the AOT tests ## From 48c29dab257a0b5f62bf86f9479eafb82902384d Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Sun, 14 Sep 2025 16:01:07 -0400 Subject: [PATCH 2/4] Make GPU library linking opt-in in test/generator --- test/generator/CMakeLists.txt | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/test/generator/CMakeLists.txt b/test/generator/CMakeLists.txt index f9f7b6feb5e3..e79523ec31c9 100644 --- a/test/generator/CMakeLists.txt +++ b/test/generator/CMakeLists.txt @@ -203,7 +203,7 @@ function(_add_halide_libraries TARGET) endfunction() function(_add_one_aot_test TARGET) - set(options "") + set(options LINK_TO_GPU) set(oneValueArgs "") set(multiValueArgs SRCS DEPS GROUPS INCLUDES DEFINES) cmake_parse_arguments(args "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -235,17 +235,19 @@ function(_add_one_aot_test TARGET) target_compile_definitions("${TARGET}" PRIVATE WITH_DAWN_NATIVE) endif () endif () - if (Halide_TARGET MATCHES "cuda") - if (NOT TARGET CUDA::cuda_driver) - find_package(CUDAToolkit REQUIRED) + if (args_LINK_TO_GPU) + if (Halide_TARGET MATCHES "cuda") + if (NOT TARGET CUDA::cuda_driver) + find_package(CUDAToolkit REQUIRED) + endif () + target_link_libraries("${TARGET}" PRIVATE CUDA::cuda_driver CUDA::cudart) endif () - target_link_libraries("${TARGET}" PRIVATE CUDA::cuda_driver CUDA::cudart) - endif () - if (Halide_TARGET MATCHES "opencl") - if (NOT TARGET OpenCL::OpenCL) - find_package(OpenCL REQUIRED) + if (Halide_TARGET MATCHES "opencl") + if (NOT TARGET OpenCL::OpenCL) + find_package(OpenCL REQUIRED) + endif () + target_link_libraries("${TARGET}" PRIVATE OpenCL::OpenCL) endif () - target_link_libraries("${TARGET}" PRIVATE OpenCL::OpenCL) endif () add_halide_test("${TARGET}" GROUPS generator ${args_GROUPS}) endfunction() @@ -323,7 +325,7 @@ endfunction() # acquire_release_aottest.cpp # acquire_release_generator.cpp _add_halide_libraries(acquire_release) -_add_halide_aot_tests(acquire_release) +_add_halide_aot_tests(acquire_release LINK_TO_GPU) # TODO: what are these? # configure_jittest.cpp @@ -500,7 +502,8 @@ if ((NOT ${_USING_WASM}) AND (NOT Halide_TARGET MATCHES "vulkan")) FROM gpu_multi_context_threaded.generator FEATURES user_context) _add_halide_aot_tests(gpu_multi_context_threaded - HALIDE_LIBRARIES gpu_multi_context_threaded_add gpu_multi_context_threaded_mul) + HALIDE_LIBRARIES gpu_multi_context_threaded_add gpu_multi_context_threaded_mul + LINK_TO_GPU) endif () # gpu_object_lifetime_aottest.cpp From e3964c5cce8341c7819590410508be9df0404000 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Sun, 14 Sep 2025 16:03:57 -0400 Subject: [PATCH 3/4] Add define_extern_opencl_aottest.cpp --- test/generator/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/generator/CMakeLists.txt b/test/generator/CMakeLists.txt index e79523ec31c9..557d0ee6a81d 100644 --- a/test/generator/CMakeLists.txt +++ b/test/generator/CMakeLists.txt @@ -461,7 +461,7 @@ endif () # (NOT ${_USING_WASM}) # define_extern_opencl_aottest.cpp # define_extern_opencl_generator.cpp _add_halide_libraries(define_extern_opencl) -_add_halide_aot_tests(define_extern_opencl) +_add_halide_aot_tests(define_extern_opencl LINK_TO_GPU) # embed_image_aottest.cpp # embed_image_generator.cpp From f5b25eb6fd0f8d53a05d5382aded86e2c80d436c Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Sun, 14 Sep 2025 17:06:25 -0400 Subject: [PATCH 4/4] Forward LINK_TO_GPU correctly --- test/generator/CMakeLists.txt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/generator/CMakeLists.txt b/test/generator/CMakeLists.txt index 557d0ee6a81d..35731923f148 100644 --- a/test/generator/CMakeLists.txt +++ b/test/generator/CMakeLists.txt @@ -253,7 +253,7 @@ function(_add_one_aot_test TARGET) endfunction() function(_add_halide_aot_tests NAME) - set(options OMIT_C_BACKEND) + set(options OMIT_C_BACKEND LINK_TO_GPU) set(oneValueArgs "") set(multiValueArgs ENABLE_IF GROUPS INCLUDES HALIDE_LIBRARIES HALIDE_RUNTIME DEPS SRCS) cmake_parse_arguments(args "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -262,6 +262,12 @@ function(_add_halide_aot_tests NAME) return() endif () + if (args_LINK_TO_GPU) + set(_LINK_TO_GPU LINK_TO_GPU) + else () + set(_LINK_TO_GPU "") + endif () + # If HALIDE_LIBRARIES is omitted, assume we want just a single halide_library target # with a matching name if (NOT args_HALIDE_LIBRARIES) @@ -303,7 +309,8 @@ function(_add_halide_aot_tests NAME) SRCS "${args_SRCS}" DEPS ${args_HALIDE_LIBRARIES} ${args_HALIDE_RUNTIME} ${args_DEPS} INCLUDES ${args_INCLUDES} - GROUPS ${args_GROUPS}) + GROUPS ${args_GROUPS} + ${_LINK_TO_GPU}) if (NOT args_OMIT_C_BACKEND) set(HALIDE_LIBRARIES_CPP "") foreach (hl IN LISTS args_HALIDE_LIBRARIES) @@ -313,7 +320,8 @@ function(_add_halide_aot_tests NAME) SRCS "${args_SRCS}" DEPS ${HALIDE_LIBRARIES_CPP} ${args_HALIDE_RUNTIME} ${args_DEPS} INCLUDES ${args_INCLUDES} - GROUPS ${args_GROUPS}) + GROUPS ${args_GROUPS} + ${_LINK_TO_GPU}) endif () endif () endfunction()