@@ -59,6 +59,7 @@ namespace traccc::sycl::details {
59
59
// /
60
60
// / @tparam stepper_t The stepper type used for the track propagation
61
61
// / @tparam navigator_t The navigator type used for the track navigation
62
+ // / @tparam kernels_t Structure with unique "kernel structures"
62
63
// /
63
64
// / @param det A view of the detector object
64
65
// / @param field The magnetic field object
@@ -72,7 +73,7 @@ namespace traccc::sycl::details {
72
73
// /
73
74
// / @return A buffer of the found track candidates
74
75
// /
75
- template <typename stepper_t , typename navigator_t >
76
+ template <typename stepper_t , typename navigator_t , typename kernels_t >
76
77
track_candidate_container_types::buffer find_tracks (
77
78
const typename navigator_t ::detector_type::view_type& det,
78
79
const typename stepper_t ::magnetic_field_type& field,
@@ -129,7 +130,8 @@ track_candidate_container_types::buffer find_tracks(
129
130
130
131
queue
131
132
.submit ([&](::sycl::handler& h) {
132
- h.parallel_for (
133
+ h.parallel_for <
134
+ typename kernels_t ::make_barcode_sequence_kernel_type>(
133
135
calculate1DimNdRange (n_modules, 64 ),
134
136
[uniques_view = vecmem::get_data (uniques_buffer),
135
137
barcodes_view = vecmem::get_data (barcodes_buffer)](
@@ -182,7 +184,8 @@ track_candidate_container_types::buffer find_tracks(
182
184
183
185
queue
184
186
.submit ([&](::sycl::handler& h) {
185
- h.parallel_for (
187
+ h.parallel_for <
188
+ typename kernels_t ::apply_interaction_kernel_type>(
186
189
calculate1DimNdRange (n_in_params, 64 ),
187
190
[config, det, n_in_params,
188
191
in_params = vecmem::get_data (in_params_buffer),
@@ -244,7 +247,7 @@ track_candidate_container_types::buffer find_tracks(
244
247
shared_candidates_size (1 , h);
245
248
246
249
// Launch the kernel.
247
- h.parallel_for (
250
+ h.parallel_for < typename kernels_t ::find_tracks_kernel_type> (
248
251
calculate1DimNdRange (n_in_params, nFindTracksThreads),
249
252
[config, det, measurements,
250
253
in_params = vecmem::get_data (in_params_buffer),
@@ -308,7 +311,8 @@ track_candidate_container_types::buffer find_tracks(
308
311
309
312
queue
310
313
.submit ([&](::sycl::handler& h) {
311
- h.parallel_for (
314
+ h.parallel_for <
315
+ typename kernels_t ::fill_sort_keys_kernel_type>(
312
316
calculate1DimNdRange (n_candidates, 256 ),
313
317
[in_params = vecmem::get_data (in_params_buffer),
314
318
keys = vecmem::get_data (keys_buffer),
@@ -356,7 +360,8 @@ track_candidate_container_types::buffer find_tracks(
356
360
// surface.
357
361
queue
358
362
.submit ([&](::sycl::handler& h) {
359
- h.parallel_for (
363
+ h.parallel_for <typename kernels_t ::
364
+ propagate_to_next_surface_kernel_type>(
360
365
calculate1DimNdRange (n_candidates, 64 ),
361
366
[config, det, field,
362
367
in_params = vecmem::get_data (in_params_buffer),
@@ -440,7 +445,7 @@ track_candidate_container_types::buffer find_tracks(
440
445
441
446
queue
442
447
.submit ([&](::sycl::handler& h) {
443
- h.parallel_for (
448
+ h.parallel_for < typename kernels_t ::build_tracks_kernel_type> (
444
449
calculate1DimNdRange (n_tips_total, 64 ),
445
450
[config, measurements, seeds,
446
451
links = vecmem::get_data (links_buffer),
@@ -478,7 +483,7 @@ track_candidate_container_types::buffer find_tracks(
478
483
479
484
queue
480
485
.submit ([&](::sycl::handler& h) {
481
- h.parallel_for (
486
+ h.parallel_for < typename kernels_t ::prune_tracks_kernel_type> (
482
487
calculate1DimNdRange (n_valid_tracks, 64 ),
483
488
[track_candidates,
484
489
valid_indices = vecmem::get_data (valid_indices_buffer),
0 commit comments