Skip to content

Commit 12bdfeb

Browse files
committed
GPU: one thread per threadgroup for the looper following on Metal
GPUTPCGMMergerFollowLoopers follows each looper in one thread through a long serial loop of propagation steps and cluster searches. There are few loopers, about 206 per event of 30-collision Pb-Pb, so with 256 threads per group they all landed in one threadgroup, where the lanes of each SIMD group take different paths and run one after the other: 33 to 41 ms per event in a Metal System Trace, against 0.6 ms on the CPU. Without the cluster searches the kernel took 0.6 ms, and 32 or 64 threads per group did not help. With one thread per group every looper runs in its own SIMD group; 16 groups per GPU core leave room for twice as many loopers as here. On an M1 Max the kernel took 3.6 to 8.5 ms per event in a trace with 8 groups per core, and the 30-collision Pb-Pb time frame takes 1058 ms per event instead of 1088 with 8 or 16 groups per core alike (4 interleaved rounds of 10 runs, load average 4 to 7). The clusters are byte-identical to the CPU's.
1 parent 56ed42e commit 12bdfeb

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

‎GPU/GPUTracking/Definitions/Parameters/GPUParameters.csv‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ GPUTPCCFDecodeZSDenseLink,"""GPUCA_WARP_SIZE""",,"[""GPUCA_WARP_SIZE"", 4]","[""
2828
GPUTPCCFGather,"[1024, 1]",,"[1024, 5]","[1024, 1]",,,,,,"[160, 11]","[1024, 1]",736,896,,"[928, 1]",,"[1024, 1]","[320, 2]",
2929
COMPRESSION_GATHER,1024,,1024,1024,,,,,,1024,1024,,1024,,,,,,
3030
GPUTPCGMMergerTrackFit,256,,"[192, 2]","[64, 7]",,,,,,"[32, 16]","[32, 8]","[32, 14]","[160, 2]",,"[32, 24]",,"[64, 8]","[64, 6]","[64, 4]"
31-
GPUTPCGMMergerFollowLoopers,256,,"[256, 5]","[256, 4]",,,,,,"[256, 4]","[128, 4]","[1024, 1]",640,,"[128, 16]",,"[224, 3]","[256, 7]",
31+
GPUTPCGMMergerFollowLoopers,256,,"[256, 5]","[256, 4]",,,,,,"[256, 4]","[128, 4]","[1024, 1]",640,,"[128, 16]",,"[224, 3]","[256, 7]","[1, 16]"
3232
GPUTPCGMMergerSectorRefit,256,,"[64, 4]","[256, 2]",,,,,,"[32, 8]","[64, 5]","[32, 7]","[32, 7]",,"[32, 20]",,"[32, 10]","[64, 4]",
3333
GPUTPCGMMergerUnpackResetIds,256,,256,256,,,,,,256,256,256,256,,256,,256,256,
3434
GPUTPCGMMergerUnpackGlobal,256,,256,256,,,,,,256,256,256,256,,256,,256,256,

0 commit comments

Comments
 (0)