Skip to content

Commit 3243e71

Browse files
fiedlerpstephenswat
authored andcommitted
Cut by max_num_skipping_per_cand as soon as possible
1 parent 9142443 commit 3243e71

File tree

7 files changed

+33
-36
lines changed

7 files changed

+33
-36
lines changed

device/alpaka/src/finding/finding_algorithm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ finding_algorithm<stepper_t, navigator_t>::operator()(
276276
.step = step,
277277
.out_params_view = updated_params_buffer,
278278
.out_params_liveness_view = updated_liveness_buffer,
279+
.tips_view = tips_buffer,
279280
.n_tracks_per_seed_view = n_tracks_per_seed_buffer};
280281

281282
auto bufAcc_payload =
@@ -355,7 +356,6 @@ finding_algorithm<stepper_t, navigator_t>::operator()(
355356
.params_view = in_params_buffer,
356357
.params_liveness_view = param_liveness_buffer,
357358
.param_ids_view = param_ids_buffer,
358-
.links_view = links_buffer,
359359
.prev_links_idx = step_to_link_idx_map[step],
360360
.step = step,
361361
.n_in_params = n_candidates,

device/common/include/traccc/finding/device/find_tracks.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ struct find_tracks_payload {
9999
*/
100100
vecmem::data::vector_view<unsigned int> out_params_liveness_view;
101101

102+
/**
103+
* @brief View object to the vector of tips
104+
*/
105+
vecmem::data::vector_view<unsigned int> tips_view;
106+
102107
/**
103108
* @brief View object to the vector of the number of tracks per initial
104109
* input seed

device/common/include/traccc/finding/device/impl/find_tracks.ipp

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ TRACCC_HOST_DEVICE inline void find_tracks(
7171
payload.barcodes_view);
7272
vecmem::device_vector<const unsigned int> upper_bounds(
7373
payload.upper_bounds_view);
74+
vecmem::device_vector<unsigned int> tips(payload.tips_view);
7475
vecmem::device_vector<unsigned int> n_tracks_per_seed(
7576
payload.n_tracks_per_seed_view);
7677

@@ -308,25 +309,31 @@ TRACCC_HOST_DEVICE inline void find_tracks(
308309
const unsigned int s_pos = num_tracks_per_seed.fetch_add(1);
309310

310311
if (s_pos < cfg.max_num_branches_per_seed) {
311-
// Add measurement candidates to link
312-
const unsigned int l_pos = links.bulk_append_implicit(1);
313-
314312
const unsigned int n_skipped =
315313
payload.step == 0 ? 0 : links.at(prev_link_idx).n_skipped;
316314

317-
links.at(l_pos) = {
318-
.step = payload.step,
319-
.previous_candidate_idx = prev_link_idx,
320-
.meas_idx = std::numeric_limits<unsigned int>::max(),
321-
.seed_idx = seed_idx,
322-
.n_skipped = n_skipped + 1,
323-
.chi2 = std::numeric_limits<traccc::scalar>::max()};
324-
325-
out_params.at(l_pos - payload.curr_links_idx) =
326-
in_params.at(in_param_id);
327-
out_params_liveness.at(l_pos - payload.curr_links_idx) = 1u;
315+
if (n_skipped >= cfg.max_num_skipping_per_cand) {
316+
// In case of max skipping being 0 and first step being skipped,
317+
// the links are empty, and the tip has nowhere to point
318+
assert(payload.step > 0);
319+
tips.push_back(prev_link_idx);
320+
} else {
321+
// Add measurement candidates to link
322+
const unsigned int l_pos = links.bulk_append_implicit(1);
323+
324+
links.at(l_pos) = {
325+
.step = payload.step,
326+
.previous_candidate_idx = prev_link_idx,
327+
.meas_idx = std::numeric_limits<unsigned int>::max(),
328+
.seed_idx = seed_idx,
329+
.n_skipped = n_skipped + 1,
330+
.chi2 = std::numeric_limits<traccc::scalar>::max()};
331+
332+
out_params.at(l_pos - payload.curr_links_idx) =
333+
in_params.at(in_param_id);
334+
out_params_liveness.at(l_pos - payload.curr_links_idx) = 1u;
335+
}
328336
}
329337
}
330338
}
331-
332339
} // namespace traccc::device

device/common/include/traccc/finding/device/impl/propagate_to_next_surface.ipp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,13 @@ TRACCC_HOST_DEVICE inline void propagate_to_next_surface(
3232

3333
const unsigned int param_id = param_ids.at(globalIndex);
3434

35-
// Links
36-
vecmem::device_vector<const candidate_link> links(payload.links_view);
37-
3835
// Parameter liveness
3936
vecmem::device_vector<unsigned int> params_liveness(
4037
payload.params_liveness_view);
4138

4239
// tips
4340
vecmem::device_vector<unsigned int> tips(payload.tips_view);
4441

45-
if (links.at(payload.prev_links_idx + param_id).n_skipped >
46-
cfg.max_num_skipping_per_cand) {
47-
params_liveness[param_id] = 0u;
48-
tips.push_back(payload.prev_links_idx + param_id);
49-
return;
50-
}
51-
5242
// Detector
5343
typename propagator_t::detector_type det(payload.det_data);
5444

device/common/include/traccc/finding/device/propagate_to_next_surface.hpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ struct propagate_to_next_surface_payload {
5050
*/
5151
vecmem::data::vector_view<const unsigned int> param_ids_view;
5252

53-
/**
54-
* @brief View object to the vector of candidate links
55-
*/
56-
vecmem::data::vector_view<const candidate_link> links_view;
57-
5853
/**
5954
* @brief Index in the link vector at which the current step starts
6055
*/

device/cuda/src/finding/finding_algorithm.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ finding_algorithm<stepper_t, navigator_t>::operator()(
282282
.step = step,
283283
.out_params_view = updated_params_buffer,
284284
.out_params_liveness_view = updated_liveness_buffer,
285+
.tips_view = tips_buffer,
285286
.n_tracks_per_seed_view = n_tracks_per_seed_buffer});
286287
TRACCC_CUDA_ERROR_CHECK(cudaGetLastError());
287288

@@ -352,7 +353,6 @@ finding_algorithm<stepper_t, navigator_t>::operator()(
352353
.params_view = in_params_buffer,
353354
.params_liveness_view = param_liveness_buffer,
354355
.param_ids_view = param_ids_buffer,
355-
.links_view = links_buffer,
356356
.prev_links_idx = step_to_link_idx_map[step],
357357
.step = step,
358358
.n_in_params = n_candidates,

device/sycl/src/finding/find_tracks.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ track_candidate_container_types::buffer find_tracks(
290290
updated_params = vecmem::get_data(updated_params_buffer),
291291
updated_liveness =
292292
vecmem::get_data(updated_liveness_buffer),
293+
tips = vecmem::get_data(tips_buffer),
293294
n_tracks_per_seed =
294295
vecmem::get_data(n_tracks_per_seed_buffer),
295296
shared_candidates_size, shared_num_candidates,
@@ -305,7 +306,7 @@ track_candidate_container_types::buffer find_tracks(
305306
{det, measurements, in_params, param_liveness,
306307
n_in_params, barcodes, upper_bounds, links_view,
307308
prev_links_idx, curr_links_idx, step,
308-
updated_params, updated_liveness,
309+
updated_params, updated_liveness, tips,
309310
n_tracks_per_seed},
310311
{&(shared_num_candidates[0]),
311312
&(shared_candidates[0]),
@@ -392,7 +393,6 @@ track_candidate_container_types::buffer find_tracks(
392393
param_liveness =
393394
vecmem::get_data(param_liveness_buffer),
394395
param_ids = vecmem::get_data(param_ids_buffer),
395-
links_view = vecmem::get_data(links_buffer),
396396
prev_links_idx = step_to_link_idx_map[step], step,
397397
n_candidates, tips = vecmem::get_data(tips_buffer)](
398398
::sycl::nd_item<1> item) {
@@ -401,8 +401,8 @@ track_candidate_container_types::buffer find_tracks(
401401
typename stepper_t::magnetic_field_type>(
402402
details::global_index(item), config,
403403
{det, field, in_params, param_liveness,
404-
param_ids, links_view, prev_links_idx, step,
405-
n_candidates, tips});
404+
param_ids, prev_links_idx, step, n_candidates,
405+
tips});
406406
});
407407
})
408408
.wait_and_throw();

0 commit comments

Comments
 (0)