From 5c38595401abe3ad439f6747c54865482fee762c Mon Sep 17 00:00:00 2001 From: Basit Ayantunde Date: Mon, 14 Oct 2024 22:28:45 +0100 Subject: [PATCH 1/4] updated libcudftestutil CMake linking logic for 24.12 --- cpp/benchmarks/CMakeLists.txt | 3 ++- cpp/cmake/thirdparty/get_cudf.cmake | 4 ++-- cpp/tests/CMakeLists.txt | 21 ++++++++++++++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/cpp/benchmarks/CMakeLists.txt b/cpp/benchmarks/CMakeLists.txt index 10e626f3f..25b8152f7 100644 --- a/cpp/benchmarks/CMakeLists.txt +++ b/cpp/benchmarks/CMakeLists.txt @@ -38,7 +38,8 @@ target_link_libraries(cuspatial_benchmark_common PUBLIC benchmark::benchmark cudf::cudftestutil ranger::ranger - cuspatial) + cuspatial GTest::gtest GTest::gmock + PRIVATE cudf::cudftestutil_impl) target_compile_options(cuspatial_benchmark_common PUBLIC "$<$:${CUSPATIAL_CXX_FLAGS}>" diff --git a/cpp/cmake/thirdparty/get_cudf.cmake b/cpp/cmake/thirdparty/get_cudf.cmake index 3d7232fba..c5d2712c9 100644 --- a/cpp/cmake/thirdparty/get_cudf.cmake +++ b/cpp/cmake/thirdparty/get_cudf.cmake @@ -1,5 +1,5 @@ #============================================================================= -# Copyright (c) 2021-2023, NVIDIA CORPORATION. +# Copyright (c) 2021-2024, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ function(find_and_configure_cudf) set(cudf_components "") if(BUILD_TESTS OR BUILD_BENCHMARKS) - list(APPEND global_targets cudf::cudftestutil) + list(APPEND global_targets cudf::cudftestutil cudf::cudftestutil_impl) set(cudf_components COMPONENTS testing) endif() diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index f6752c860..bc49ffdcf 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -17,6 +17,25 @@ ################################################################################################### # - compiler function ----------------------------------------------------------------------------- +add_library(cuspatial_test_common OBJECT) + +target_compile_features(cuspatial_test_common PUBLIC cxx_std_17 cuda_std_17) + +set_target_properties(cuspatial_test_common + PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$" + INSTALL_RPATH "\$ORIGIN/../../../lib" + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + POSITION_INDEPENDENT_CODE ON + INTERFACE_POSITION_INDEPENDENT_CODE ON +) + +target_link_libraries(cuspatial_test_common + PUBLIC cudf::cudftestutil GTest::gtest GTest::gmock + PRIVATE cudf::cudftestutil_impl) + function(ConfigureTest CMAKE_TEST_NAME) add_executable(${CMAKE_TEST_NAME} ${ARGN}) target_compile_options(${CMAKE_TEST_NAME} @@ -34,7 +53,7 @@ function(ConfigureTest CMAKE_TEST_NAME) CUDA_STANDARD 17 CUDA_STANDARD_REQUIRED ON ) - target_link_libraries(${CMAKE_TEST_NAME} GTest::gtest_main GTest::gmock_main ranger::ranger cudf::cudftestutil cuspatial) + target_link_libraries(${CMAKE_TEST_NAME} GTest::gtest_main GTest::gmock_main ranger::ranger cudf::cudftestutil cuspatial cuspatial_test_common) add_test(NAME ${CMAKE_TEST_NAME} COMMAND ${CMAKE_TEST_NAME}) install( TARGETS ${CMAKE_TEST_NAME} From 8356c40a10759683043d9a9e9de644d8e0cb685a Mon Sep 17 00:00:00 2001 From: Basit Ayantunde Date: Mon, 14 Oct 2024 22:56:38 +0100 Subject: [PATCH 2/4] added stub source file for cudftestutil_impl's OBJECT target compilation --- cpp/tests/CMakeLists.txt | 2 +- cpp/tests/test_common.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 cpp/tests/test_common.cpp diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index bc49ffdcf..bb6e52b2c 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -17,7 +17,7 @@ ################################################################################################### # - compiler function ----------------------------------------------------------------------------- -add_library(cuspatial_test_common OBJECT) +add_library(cuspatial_test_common OBJECT test_common.cpp) target_compile_features(cuspatial_test_common PUBLIC cxx_std_17 cuda_std_17) diff --git a/cpp/tests/test_common.cpp b/cpp/tests/test_common.cpp new file mode 100644 index 000000000..244bc0c4b --- /dev/null +++ b/cpp/tests/test_common.cpp @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024, NVIDIA CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ From 991f157e7a95f94cafb51f4d2ddfb29138b92a75 Mon Sep 17 00:00:00 2001 From: Basit Ayantunde Date: Tue, 15 Oct 2024 01:10:50 +0000 Subject: [PATCH 3/4] used experimental feature flags for old cuda compilers --- cpp/CMakeLists.txt | 2 +- cpp/benchmarks/CMakeLists.txt | 3 +++ cpp/tests/CMakeLists.txt | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 8908617b1..aac5aea43 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -68,7 +68,7 @@ set(CUSPATIAL_BUILD_TESTS ${BUILD_TESTS}) set(CUSPATIAL_BUILD_BENCHMARKS ${BUILD_BENCHMARKS}) set(CUSPATIAL_CXX_FLAGS "") -set(CUSPATIAL_CUDA_FLAGS "") +set(CUSPATIAL_CUDA_FLAGS --expt-extended-lambda --expt-relaxed-constexpr) set(CUSPATIAL_CXX_DEFINITIONS "") set(CUSPATIAL_CUDA_DEFINITIONS "") diff --git a/cpp/benchmarks/CMakeLists.txt b/cpp/benchmarks/CMakeLists.txt index 25b8152f7..98506d9a4 100644 --- a/cpp/benchmarks/CMakeLists.txt +++ b/cpp/benchmarks/CMakeLists.txt @@ -23,6 +23,9 @@ add_library(cuspatial_benchmark_common OBJECT target_compile_features(cuspatial_benchmark_common PUBLIC cxx_std_17 cuda_std_17) +target_compile_options(cuspatial_benchmark_common PUBLIC "$<$:${CUSPATIAL_CXX_FLAGS}>" + "$<$:${CUSPATIAL_CUDA_FLAGS}>") + set_target_properties(cuspatial_benchmark_common PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$" INSTALL_RPATH "\$ORIGIN/../../../lib" diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index bb6e52b2c..c77bc74e4 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -36,6 +36,9 @@ target_link_libraries(cuspatial_test_common PUBLIC cudf::cudftestutil GTest::gtest GTest::gmock PRIVATE cudf::cudftestutil_impl) +target_compile_options(cuspatial_test_common PUBLIC "$<$:${CUSPATIAL_CXX_FLAGS}>" +"$<$:${CUSPATIAL_CUDA_FLAGS}>") + function(ConfigureTest CMAKE_TEST_NAME) add_executable(${CMAKE_TEST_NAME} ${ARGN}) target_compile_options(${CMAKE_TEST_NAME} From f306a6ebd3d4145d3fdc57938c082ee02a593c37 Mon Sep 17 00:00:00 2001 From: Basit Ayantunde Date: Wed, 16 Oct 2024 13:43:35 +0000 Subject: [PATCH 4/4] added doc for cudftestutil_compilation method --- cpp/tests/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index c77bc74e4..7bca36a41 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -17,6 +17,10 @@ ################################################################################################### # - compiler function ----------------------------------------------------------------------------- +# cudftestutil_impl is an interface source library, this empty object +# library is used to speed-up compilation and linking against it, +# otherwise we pay the non-trivial compilation cost repeatedly for each +# test executable add_library(cuspatial_test_common OBJECT test_common.cpp) target_compile_features(cuspatial_test_common PUBLIC cxx_std_17 cuda_std_17)