Skip to content

ITS GPU Seeding vertexer: use warp reductions for fit peak kernel - #15960

Merged
f3sch merged 1 commit into
AliceO2Group:devfrom
cima22:parallel-vertexer
Oct 17, 2026
Merged

f3sch merged 1 commit into
AliceO2Group:devfrom
cima22:parallel-vertexer

Conversation

@cima22

@cima22 cima22 commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

ITS GPU seeding vertexer: fit vertex candidates with one warp per candidate

fitPeaks fitted 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.

  • fitPeaksKernel replaces the thread-per-candidate kernel.

  • GPUCommonAlgorithm.h: adds warp_reduce_add/min/max<Width>() (XOR butterfly, result in every lane) next to warp_broadcast

  • ClusterLines.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): fitPeaks kernel 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.
fitpeaks_ab

@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2/fullCI_slc9 for a7472dc at 2026-10-14 20:02:

No log files found

Full log here.

@f3sch
f3sch merged commit e29076c into AliceO2Group:dev Oct 17, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

5 participants