|
file(GLOB test_srcs |
|
RELATIVE "${CMAKE_CURRENT_LIST_DIR}}" |
|
CONFIGURE_DEPENDS |
|
*.cu *.cpp |
|
) |
|
|
|
# These tests always build with RDC, so make sure that the sm_XX flags are |
|
# compatible. See note in ThrustCudaConfig.cmake. |
|
# TODO once we're using CUDA_ARCHITECTURES, we can setup non-rdc fallback |
|
# tests to build for non-rdc arches. But for now, all files in a given directory |
|
# must build with the same `CMAKE_CUDA_FLAGS` due to CMake constraints around |
|
# how CUDA_FLAGS works. |
|
set(CMAKE_CUDA_FLAGS "${THRUST_CUDA_FLAGS_BASE} ${THRUST_CUDA_FLAGS_RDC}") |
|
|
|
foreach(thrust_target IN LISTS THRUST_TARGETS) |
|
thrust_get_target_property(config_device ${thrust_target} DEVICE) |
|
if (NOT config_device STREQUAL "CUDA") |
|
continue() |
|
endif() |
|
|
|
foreach(test_src IN LISTS test_srcs) |
|
get_filename_component(test_name "${test_src}" NAME_WLE) |
|
string(PREPEND test_name "cuda.") |
|
|
|
# Create two targets, one with RDC enabled, the other without. This tests |
|
# both device-side behaviors -- the CDP kernel launch with RDC, and the |
|
# serial fallback path without RDC. |
|
thrust_add_test(seq_test_target ${test_name}.cdp_0 "${test_src}" ${thrust_target}) |
|
|
|
if (THRUST_ENABLE_TESTS_WITH_RDC) |
|
thrust_add_test(cdp_test_target ${test_name}.cdp_1 "${test_src}" ${thrust_target}) |
|
thrust_enable_rdc_for_cuda_target(${cdp_test_target}) |
|
endif() |
|
endforeach() |
|
endforeach() |
|
|