Repository navigation
Conversation
cima22
requested review from
davidrohr,
f3sch,
fprino,
mconcas,
mcoquet642 and
shahor02
as code owners
October 14, 2026 15:07
davidrohr
approved these changes
Oct 14, 2026
Collaborator
fprino
approved these changes
Oct 15, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ITS GPU seeding vertexer: fit vertex candidates with one warp per candidate
fitPeaksfitted each vertex candidate with a single thread, looping serially over every line in the candidate's z-window. A TF has few candidates but windows of up to thousands of lines, so a handful of threads with large windows set the kernel duration while most of the GPU sat idle. The kernel now assigns one warp per candidate: the lanes stride over the window, and the normal-equation sums, time bounds, contributor counts and residuals are combined with warp shuffle reductions, so every lane holds the result.fitPeaksKernelreplaces the thread-per-candidate kernel.GPUCommonAlgorithm.h:addswarp_reduce_add/min/max<Width>()(XOR butterfly, result in every lane) next to warp_broadcastClusterLines.h:the normal equations, the solve and the fit results move into a LineFit base class, shared by the CPU ClusterLines (sequential) and a new device-only WarpFit.The handler aborts if the device's warp size differs from the compiled gpu::WarpSize.

On 4 Pb-Pb raw TFs (run 560161, AMD MI50):
fitPeakskernel time summed over the TFs went from 80.2 ms to 3.5 ms (23×), and the GPU seeding vertexer is 10–13% faster per TF. Vertices and tracks are identical to before on both GPU and CPU.