Skip to content

Commit fb8b38d

Browse files
committed
Simplify the API of traccc::device::form_spacepoints.
There is no need for it to receive the size of the measurement collection separately. It already has a view of the collection with that information.
1 parent 09ac84e commit fb8b38d

File tree

5 files changed

+18
-25
lines changed

5 files changed

+18
-25
lines changed

device/alpaka/src/seeding/spacepoint_formation_algorithm.cpp

+3-5
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,13 @@ struct FormSpacepointsKernel {
2323
ALPAKA_FN_ACC void operator()(
2424
TAcc const& acc, typename detector_t::view_type det_view,
2525
measurement_collection_types::const_view measurements_view,
26-
const unsigned int measurement_count,
2726
edm::spacepoint_collection::view spacepoints_view) const {
2827

2928
auto const globalThreadIdx =
3029
::alpaka::getIdx<::alpaka::Grid, ::alpaka::Threads>(acc)[0u];
3130

3231
device::form_spacepoints<detector_t>(
33-
globalThreadIdx, det_view, measurements_view, measurement_count,
34-
spacepoints_view);
32+
globalThreadIdx, det_view, measurements_view, spacepoints_view);
3533
}
3634
};
3735

@@ -58,6 +56,7 @@ spacepoint_formation_algorithm<detector_t>::operator()(
5856
edm::spacepoint_collection::buffer spacepoints(
5957
num_measurements, m_mr.main, vecmem::data::buffer_type::resizable);
6058
m_copy.get().setup(spacepoints)->ignore();
59+
edm::spacepoint_collection::view spacepoints_view{spacepoints};
6160

6261
// If there are no measurements, we can conclude here.
6362
if (num_measurements == 0) {
@@ -71,8 +70,7 @@ spacepoint_formation_algorithm<detector_t>::operator()(
7170

7271
// Launch the spacepoint formation kernel.
7372
::alpaka::exec<Acc>(queue, workDiv, FormSpacepointsKernel<detector_t>{},
74-
det_view, measurements_view, num_measurements,
75-
vecmem::get_data(spacepoints));
73+
det_view, measurements_view, spacepoints_view);
7674
::alpaka::wait(queue);
7775

7876
// Return the reconstructed spacepoints.

device/common/include/traccc/seeding/device/form_spacepoints.hpp

-2
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,12 @@ namespace traccc::device {
2323
/// @param[in] globalIndex The index for the current thread
2424
/// @param[in] det_view A view type object of detector
2525
/// @param[in] measurements_view Collection of measurements
26-
/// @param[in] measurement_count Number of measurements
2726
/// @param[out] spacepoints_view Collection of spacepoints
2827
///
2928
template <typename detector_t>
3029
TRACCC_HOST_DEVICE inline void form_spacepoints(
3130
global_index_t globalIndex, typename detector_t::view_type det_view,
3231
const measurement_collection_types::const_view& measurements_view,
33-
unsigned int measurement_count,
3432
edm::spacepoint_collection::view spacepoints_view);
3533

3634
} // namespace traccc::device

device/common/include/traccc/seeding/device/impl/form_spacepoints.ipp

+6-6
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,21 @@ template <typename detector_t>
1919
TRACCC_HOST_DEVICE inline void form_spacepoints(
2020
const global_index_t globalIndex, typename detector_t::view_type det_view,
2121
const measurement_collection_types::const_view& measurements_view,
22-
unsigned int measurement_count,
2322
edm::spacepoint_collection::view spacepoints_view) {
2423

24+
// Set up the input container(s).
25+
const measurement_collection_types::const_device measurements(
26+
measurements_view);
27+
2528
// Check if anything needs to be done
26-
if (globalIndex >= measurement_count) {
29+
if (globalIndex >= measurements.size()) {
2730
return;
2831
}
2932

3033
// Create the tracking geometry
3134
detector_t det(det_view);
3235

33-
// Get device copy of input/output parameters
34-
const measurement_collection_types::const_device measurements(
35-
measurements_view);
36-
assert(measurements.size() == measurement_count);
36+
// Set up the output container(s).
3737
edm::spacepoint_collection::device spacepoints(spacepoints_view);
3838

3939
const auto& meas = measurements.at(globalIndex);

device/cuda/src/seeding/spacepoint_formation_algorithm.cu

+2-4
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@ template <typename detector_t>
2222
__global__ void __launch_bounds__(1024, 1)
2323
form_spacepoints(typename detector_t::view_type det_view,
2424
measurement_collection_types::const_view measurements_view,
25-
const unsigned int measurement_count,
2625
edm::spacepoint_collection::view spacepoints_view) {
2726

2827
device::form_spacepoints<detector_t>(details::global_index1(), det_view,
29-
measurements_view, measurement_count,
30-
spacepoints_view);
28+
measurements_view, spacepoints_view);
3129
}
3230

3331
} // namespace kernels
@@ -66,7 +64,7 @@ spacepoint_formation_algorithm<detector_t>::operator()(
6664

6765
// Launch the spacepoint formation kernel.
6866
kernels::form_spacepoints<detector_t><<<nBlocks, blockSize, 0, stream>>>(
69-
det_view, measurements_view, num_measurements, spacepoints);
67+
det_view, measurements_view, spacepoints);
7068
TRACCC_CUDA_ERROR_CHECK(cudaGetLastError());
7169

7270
// Return the reconstructed spacepoints.

device/sycl/src/seeding/silicon_pixel_spacepoint_formation.hpp

+7-8
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,13 @@ edm::spacepoint_collection::buffer silicon_pixel_spacepoint_formation(
6565
// Run the spacepoint formation on the device.
6666
queue
6767
.submit([&](::sycl::handler& h) {
68-
h.parallel_for(
69-
countRange, [det_view, measurements_view, n_measurements,
70-
spacepoints_view = vecmem::get_data(result)](
71-
::sycl::nd_item<1> item) {
72-
device::form_spacepoints<detector_t>(
73-
details::global_index(item), det_view,
74-
measurements_view, n_measurements, spacepoints_view);
75-
});
68+
h.parallel_for(countRange, [det_view, measurements_view,
69+
spacepoints_view = vecmem::get_data(
70+
result)](::sycl::nd_item<1> item) {
71+
device::form_spacepoints<detector_t>(
72+
details::global_index(item), det_view, measurements_view,
73+
spacepoints_view);
74+
});
7675
})
7776
.wait_and_throw();
7877

0 commit comments

Comments
 (0)