@@ -1643,6 +1643,15 @@ void GPUChainTracking::RunTPCTrackingMerger_MergeBorderTracks(char withinSlice,
16431643 mRec ->ReturnVolatileDeviceMemory ();
16441644}
16451645
1646+ void GPUChainTracking::RunTPCTrackingMerger_Resolve (char useOrigTrackParam, char mergeAll, GPUReconstruction::krnlDeviceType deviceType)
1647+ {
1648+ runKernel<GPUTPCGMMergerResolve, 0 >(GetGridBlk (BlockCount (), 0 , deviceType), krnlRunRangeNone, krnlEventNone);
1649+ runKernel<GPUTPCGMMergerResolve, 1 >(GetGridBlk (BlockCount (), 0 , deviceType), krnlRunRangeNone, krnlEventNone);
1650+ runKernel<GPUTPCGMMergerResolve, 2 >(GetGridBlk (BlockCount (), 0 , deviceType), krnlRunRangeNone, krnlEventNone);
1651+ // TODO: Determine number of blocks from block size to fully occupy gpu
1652+ runKernel<GPUTPCGMMergerResolve, 3 >(GetGridBlk (BlockCount () * 4 , 0 , deviceType), krnlRunRangeNone, krnlEventNone, useOrigTrackParam, mergeAll);
1653+ }
1654+
16461655int GPUChainTracking::RunTPCTrackingMerger (bool synchronizeOutput)
16471656{
16481657 if (GetDeviceProcessingSettings ().debugLevel >= 6 && GetDeviceProcessingSettings ().comparableDebutOutput && param ().rec .mergerReadFromTrackerDirectly ) {
@@ -1701,22 +1710,22 @@ int GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
17011710 runKernel<GPUMemClean16>({1 , -WarpSize (), 0 , deviceType, RecoStep::TPCMerging}, krnlRunRangeNone, {}, MergerShadowAll.TmpCounter (), NSLICES * sizeof (*MergerShadowAll.TmpCounter ()));
17021711 runKernel<GPUTPCGMMergerMergeWithinPrepare>(GetGridBlk (numBlocks, 0 , deviceType), krnlRunRangeNone, krnlEventNone);
17031712 RunTPCTrackingMerger_MergeBorderTracks (1 , 0 , deviceType);
1704- runKernel<GPUTPCGMMergerResolve>( GetGridBlk (numBlocks, 0 , deviceType), krnlRunRangeNone, krnlEventNone, 0 , 1 );
1713+ RunTPCTrackingMerger_Resolve ( 0 , 1 , deviceType );
17051714 DoDebugAndDump (RecoStep::TPCMerging, 0 , doGPUall, Merger, &GPUTPCGMMerger::DumpMergedWithinSlices, mDebugFile );
17061715
17071716 runKernel<GPUTPCGMMergerClearLinks>(GetGridBlk (numBlocks, 0 , deviceType), krnlRunRangeNone, krnlEventNone, 0 );
17081717 runKernel<GPUMemClean16>({1 , -WarpSize (), 0 , deviceType, RecoStep::TPCMerging}, krnlRunRangeNone, {}, MergerShadowAll.TmpCounter (), 2 * NSLICES * sizeof (*MergerShadowAll.TmpCounter ()));
17091718 runKernel<GPUTPCGMMergerMergeSlicesPrepare>(GetGridBlk (std::max (2u , numBlocks), 0 , deviceType), krnlRunRangeNone, krnlEventNone, 2 , 3 , 0 );
17101719 RunTPCTrackingMerger_MergeBorderTracks (0 , 0 , deviceType);
1711- runKernel<GPUTPCGMMergerResolve>( GetGridBlk (numBlocks, 0 , deviceType), krnlRunRangeNone, krnlEventNone, 0 , 0 );
1720+ RunTPCTrackingMerger_Resolve ( 0 , 1 , deviceType );
17121721 runKernel<GPUMemClean16>({1 , -WarpSize (), 0 , deviceType, RecoStep::TPCMerging}, krnlRunRangeNone, {}, MergerShadowAll.TmpCounter (), 2 * NSLICES * sizeof (*MergerShadowAll.TmpCounter ()));
17131722 runKernel<GPUTPCGMMergerMergeSlicesPrepare>(GetGridBlk (std::max (2u , numBlocks), 0 , deviceType), krnlRunRangeNone, krnlEventNone, 0 , 1 , 0 );
17141723 RunTPCTrackingMerger_MergeBorderTracks (0 , 0 , deviceType);
1715- runKernel<GPUTPCGMMergerResolve>( GetGridBlk (numBlocks, 0 , deviceType), krnlRunRangeNone, krnlEventNone, 0 , 0 );
1724+ RunTPCTrackingMerger_Resolve ( 0 , 1 , deviceType );
17161725 runKernel<GPUMemClean16>({1 , -WarpSize (), 0 , deviceType, RecoStep::TPCMerging}, krnlRunRangeNone, {}, MergerShadowAll.TmpCounter (), 2 * NSLICES * sizeof (*MergerShadowAll.TmpCounter ()));
17171726 runKernel<GPUTPCGMMergerMergeSlicesPrepare>(GetGridBlk (std::max (2u , numBlocks), 0 , deviceType), krnlRunRangeNone, krnlEventNone, 0 , 1 , 1 );
17181727 RunTPCTrackingMerger_MergeBorderTracks (0 , -1 , deviceType);
1719- runKernel<GPUTPCGMMergerResolve>( GetGridBlk (numBlocks, 0 , deviceType), krnlRunRangeNone, krnlEventNone, 1 , 0 );
1728+ RunTPCTrackingMerger_Resolve ( 0 , 1 , deviceType );
17201729 DoDebugAndDump (RecoStep::TPCMerging, 0 , doGPUall, Merger, &GPUTPCGMMerger::DumpMergedBetweenSlices, mDebugFile );
17211730
17221731 runKernel<GPUMemClean16>({1 , -WarpSize (), 0 , deviceType, RecoStep::TPCMerging}, krnlRunRangeNone, {}, MergerShadowAll.TmpCounter (), 2 * NSLICES * sizeof (*MergerShadowAll.TmpCounter ()));
0 commit comments