Skip to content

Commit

Permalink
Expand tests to verify static and shared cudart
Browse files Browse the repository at this point in the history
  • Loading branch information
robertmaynard committed Sep 5, 2024
1 parent 8a3db58 commit 4866138
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ target_include_directories(rmm INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOUR
if(CUDA_STATIC_RUNTIME)
message(STATUS "RMM: Enabling static linking of cudart")
target_link_libraries(rmm INTERFACE CUDA::cudart_static)
target_compile_definitions(rmm INTERFACE RMM_STATIC_CUDART)
else()
target_link_libraries(rmm INTERFACE CUDA::cudart)
endif()
Expand Down
4 changes: 2 additions & 2 deletions include/rmm/detail/dynamic_load_runtime.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ struct dynamic_load_runtime {
{
// query if the function has already been loaded
auto* handle = ::dlsym(RTLD_DEFAULT, func_name);
if(!handle) {
if (!handle) {
auto* runtime = get_cuda_runtime_handle();
handle = ::dlsym(runtime, func_name);
handle = ::dlsym(runtime, func_name);
}
if (!handle) { return std::nullopt; }
auto* function_ptr = reinterpret_cast<signature>(handle);
Expand Down
21 changes: 18 additions & 3 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ function(ConfigureTestInternal TEST_NAME)
add_executable(${TEST_NAME} ${ARGN})
target_include_directories(${TEST_NAME} PRIVATE "$<BUILD_INTERFACE:${RMM_SOURCE_DIR}>")
target_link_libraries(${TEST_NAME} GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main
pthread rmm)
pthread)
set_target_properties(
${TEST_NAME}
PROPERTIES POSITION_INDEPENDENT_CODE ON
Expand Down Expand Up @@ -82,7 +82,7 @@ endfunction()
function(ConfigureTest TEST_NAME)

set(options)
set(one_value GPUS PERCENT)
set(one_value CUDART GPUS PERCENT)
set(multi_value)
cmake_parse_arguments(_RMM_TEST "${options}" "${one_value}" "${multi_value}" ${ARGN})
if(NOT DEFINED _RMM_TEST_GPUS AND NOT DEFINED _RMM_TEST_PERCENT)
Expand All @@ -96,13 +96,25 @@ function(ConfigureTest TEST_NAME)
set(_RMM_TEST_PERCENT 100)
endif()

#
set(cudart_link_libs $<COMPILE_ONLY:rmm>)
if(_RMM_TEST_CUDART STREQUAL SHARED)
list(APPEND cudart_link_libs CUDA::cudart)
elseif(_RMM_TEST_CUDART STREQUAL STATIC)
list(APPEND cudart_link_libs CUDA::cudart_static)
else()
set(cudart_link_libs rmm)
endif()

# Test with legacy default stream.
ConfigureTestInternal(${TEST_NAME} ${_RMM_TEST_UNPARSED_ARGUMENTS})
target_link_libraries(${TEST_NAME} ${cudart_link_libs})

# Test with per-thread default stream.
string(REGEX REPLACE "_TEST$" "_PTDS_TEST" PTDS_TEST_NAME "${TEST_NAME}")
ConfigureTestInternal("${PTDS_TEST_NAME}" ${_RMM_TEST_UNPARSED_ARGUMENTS})
target_compile_definitions("${PTDS_TEST_NAME}" PUBLIC CUDA_API_PER_THREAD_DEFAULT_STREAM)
target_link_libraries(${PTDS_TEST_NAME} ${cudart_link_libs})

foreach(name ${TEST_NAME} ${PTDS_TEST_NAME} ${NS_TEST_NAME})
rapids_test_add(
Expand All @@ -128,7 +140,10 @@ ConfigureTest(ADAPTOR_TEST mr/device/adaptor_tests.cpp)
ConfigureTest(POOL_MR_TEST mr/device/pool_mr_tests.cpp GPUS 1 PERCENT 60)

# cuda_async mr tests
ConfigureTest(CUDA_ASYNC_MR_TEST mr/device/cuda_async_mr_tests.cpp GPUS 1 PERCENT 60)
ConfigureTest(CUDA_ASYNC_MR_STATIC_CUDART_TEST mr/device/cuda_async_mr_tests.cpp GPUS 1 PERCENT 60
CUDART STATIC)
ConfigureTest(CUDA_ASYNC_MR_SHARED_CUDART_TEST mr/device/cuda_async_mr_tests.cpp GPUS 1 PERCENT 60
CUDART SHARED)

# thrust allocator tests
ConfigureTest(THRUST_ALLOCATOR_TEST mr/device/thrust_allocator_tests.cu GPUS 1 PERCENT 60)
Expand Down

0 comments on commit 4866138

Please sign in to comment.