Skip to content

Commit f442ba4

Browse files
committed
Remove Thrust from the core and common libraries
This commit removes the Thrust dependency from both the core and common libraries. As a requirement for this, I had to turn the common device code into a header-only interface library, which is a good idea regardless. The advantage of this is that it makes it much easier to manage the dependencies on Thrust.
1 parent dee541f commit f442ba4

File tree

9 files changed

+51
-68
lines changed

9 files changed

+51
-68
lines changed

CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,6 @@ if( TRACCC_SETUP_THRUST )
176176
add_subdirectory( extern/cccl )
177177
endif()
178178
endif()
179-
add_library( traccc::Thrust INTERFACE IMPORTED )
180-
target_link_libraries( traccc::Thrust INTERFACE Thrust::Thrust )
181179

182180
# Set up rocThrust.
183181
option( TRACCC_SETUP_ROCTHRUST

cmake/traccc-config.cmake.in

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,6 @@ if( TRACCC_BUILD_EXAMPLES )
5454
endif()
5555
endif()
5656

57-
# Set up the traccc::Thrust target.
58-
if ( NOT TARGET traccc::Thrust )
59-
add_library( traccc::Thrust INTERFACE IMPORTED )
60-
target_link_libraries( traccc::Thrust INTERFACE Thrust::Thrust )
61-
endif()
62-
6357
# Include the file listing all the imported targets and options.
6458
include( "${traccc_CMAKE_DIR}/traccc-config-targets.cmake" )
6559

core/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ traccc_add_library( traccc_core core TYPE SHARED
115115
"include/traccc/ambiguity_resolution/greedy_ambiguity_resolution_algorithm.hpp"
116116
"src/ambiguity_resolution/greedy_ambiguity_resolution_algorithm.cpp" )
117117
target_link_libraries( traccc_core
118-
PUBLIC Eigen3::Eigen vecmem::core detray::core detray::detectors traccc::Thrust
118+
PUBLIC Eigen3::Eigen vecmem::core detray::core detray::detectors
119119
traccc::algebra )
120120

121121
# Prevent Eigen from getting confused when building code for a

device/alpaka/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@ if(alpaka_ACC_GPU_CUDA_ENABLE)
5050
thrust_create_target( traccc::cuda_thrust
5151
HOST CPP
5252
DEVICE CUDA )
53+
target_link_libraries(traccc::cuda_thrust INTERFACE CUDA::cudart)
5354
list(APPEND PRIVATE_LIBRARIES traccc::cuda_thrust)
55+
else()
56+
thrust_create_target (traccc::alpaka_thrust
57+
HOST CPP
58+
DEVICE CPP )
59+
list(APPEND PRIVATE_LIBRARIES traccc::alpaka_thrust)
5460
endif()
5561

5662
target_link_libraries(traccc_alpaka PUBLIC ${PUBLIC_LIBRARIES} PRIVATE ${PRIVATE_LIBRARIES})

device/common/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@
88
include( traccc-compiler-options-cpp )
99

1010
# Declare the traccc::device_common library.
11-
traccc_add_library( traccc_device_common device_common TYPE SHARED
11+
traccc_add_library( traccc_device_common device_common TYPE INTERFACE
1212
# General function(s).
1313
"include/traccc/device/fill_prefix_sum.hpp"
1414
"include/traccc/device/impl/fill_prefix_sum.ipp"
1515
"include/traccc/device/make_prefix_sum_buffer.hpp"
16-
"src/make_prefix_sum_buffer.cpp"
1716
# General algorithm(s).
1817
"include/traccc/device/container_h2d_copy_alg.hpp"
1918
"include/traccc/device/impl/container_h2d_copy_alg.ipp"
@@ -80,4 +79,4 @@ traccc_add_library( traccc_device_common device_common TYPE SHARED
8079
"include/traccc/fitting/device/impl/fill_sort_keys.ipp"
8180
)
8281
target_link_libraries( traccc_device_common
83-
PUBLIC traccc::Thrust traccc::core vecmem::core )
82+
INTERFACE traccc::core vecmem::core )

device/common/include/traccc/device/make_prefix_sum_buffer.hpp

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,41 @@ using prefix_sum_buffer_t = prefix_sum_buffer;
4949
/// the view elements, and the total summation of the size vector
5050
///
5151
TRACCC_HOST
52-
prefix_sum_buffer_t make_prefix_sum_buffer(
52+
inline prefix_sum_buffer_t make_prefix_sum_buffer(
5353
const std::vector<prefix_sum_size_t>& sizes, vecmem::copy& copy,
54-
const traccc::memory_resource& mr);
54+
const traccc::memory_resource& mr) {
5555

56+
if (sizes.size() == 0) {
57+
return prefix_sum_buffer_t{
58+
vecmem::data::vector_view<prefix_sum_size_t>{},
59+
std::variant<vecmem::vector<prefix_sum_size_t>,
60+
vecmem::data::vector_buffer<prefix_sum_size_t>>{},
61+
prefix_sum_size_t{0}};
62+
}
63+
64+
// Create vector with summation of sizes
65+
vecmem::vector<prefix_sum_size_t> sizes_sum(sizes.size(),
66+
mr.host ? mr.host : &(mr.main));
67+
std::partial_sum(sizes.begin(), sizes.end(), sizes_sum.begin(),
68+
std::plus<prefix_sum_size_t>());
69+
const prefix_sum_size_t totalSize = sizes_sum.back();
70+
71+
if (mr.host != nullptr) {
72+
// Create buffer and view objects
73+
vecmem::data::vector_buffer<prefix_sum_size_t> sizes_sum_buff(
74+
static_cast<unsigned int>(sizes_sum.size()), mr.main);
75+
copy.setup(sizes_sum_buff)->ignore();
76+
(copy)(vecmem::get_data(sizes_sum), sizes_sum_buff)->wait();
77+
vecmem::data::vector_view<prefix_sum_size_t> sizes_sum_view(
78+
sizes_sum_buff);
79+
80+
return {sizes_sum_view, std::move(sizes_sum_buff), totalSize};
81+
} else {
82+
// Create view object
83+
vecmem::data::vector_view<prefix_sum_size_t> sizes_sum_view =
84+
vecmem::get_data(sizes_sum);
85+
86+
return {sizes_sum_view, std::move(sizes_sum), totalSize};
87+
}
88+
}
5689
} // namespace traccc::device

device/common/src/make_prefix_sum_buffer.cpp

Lines changed: 0 additions & 51 deletions
This file was deleted.

device/cuda/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ target_link_libraries( traccc_cuda
112112
thrust_create_target( traccc::cuda_thrust
113113
HOST CPP
114114
DEVICE CUDA )
115-
target_link_libraries( traccc_cuda
116-
PRIVATE traccc::cuda_thrust )
115+
target_link_libraries( traccc::cuda_thrust INTERFACE CUDA::cudart )
116+
target_link_libraries( traccc_cuda PUBLIC traccc::cuda_thrust )
117117

118118
# For CUDA 11 turn on separable compilation. This is necessary for using
119119
# Thrust 2.1.0.

device/kokkos/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ traccc_add_library( traccc_kokkos kokkos TYPE SHARED
1717
"src/seeding/spacepoint_binning.cpp"
1818
)
1919

20+
thrust_create_target (traccc::kokkos_thrust
21+
HOST CPP
22+
DEVICE CPP )
23+
2024
target_link_libraries( traccc_kokkos
21-
PUBLIC traccc::core vecmem::core Kokkos::kokkos
25+
PUBLIC traccc::core vecmem::core Kokkos::kokkos traccc::kokkos_thrust
2226
PRIVATE traccc::device_common )

0 commit comments

Comments
 (0)