Skip to content

Commit 6bacf76

Browse files
committed
GPU: With B=0 less tracks are merged, change buffer estimation accordingly
1 parent c18c482 commit 6bacf76

2 files changed

Lines changed: 14 additions & 10 deletions

File tree

GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ struct MergeLooperParam {
9191
#include "GPUMemorySizeScalers.h"
9292

9393
GPUTPCGMMerger::GPUTPCGMMerger()
94-
: mTrackLinks(nullptr), mNMaxSliceTracks(0), mNMaxTracks(0), mNMaxSingleSliceTracks(0), mNMaxOutputTrackClusters(0), mNMaxClusters(0), mMemoryResMemory(-1), mNClusters(0), mOutputTracks(nullptr), mSliceTrackInfos(nullptr), mSliceTrackInfoIndex(nullptr), mClusters(nullptr), mClustersXYZ(nullptr), mGlobalClusterIDs(nullptr), mClusterAttachment(nullptr), mOutputTracksTPCO2(nullptr), mOutputClusRefsTPCO2(nullptr), mOutputTracksTPCO2MC(nullptr), mTrackOrderAttach(nullptr), mTrackOrderProcess(nullptr), mBorderMemory(nullptr), mBorderRangeMemory(nullptr), mMemory(nullptr), mRetryRefitIds(nullptr), mLoopData(nullptr)
94+
: mTrackLinks(nullptr), mNTotalSliceTracks(0), mNMaxTracks(0), mNMaxSingleSliceTracks(0), mNMaxOutputTrackClusters(0), mNMaxClusters(0), mMemoryResMemory(-1), mNClusters(0), mOutputTracks(nullptr), mSliceTrackInfos(nullptr), mSliceTrackInfoIndex(nullptr), mClusters(nullptr), mClustersXYZ(nullptr), mGlobalClusterIDs(nullptr), mClusterAttachment(nullptr), mOutputTracksTPCO2(nullptr), mOutputClusRefsTPCO2(nullptr), mOutputTracksTPCO2MC(nullptr), mTrackOrderAttach(nullptr), mTrackOrderProcess(nullptr), mBorderMemory(nullptr), mBorderRangeMemory(nullptr), mMemory(nullptr), mRetryRefitIds(nullptr), mLoopData(nullptr)
9595
{
9696
//* constructor
9797

@@ -259,15 +259,15 @@ void GPUTPCGMMerger::InitializeProcessor() {}
259259

260260
void* GPUTPCGMMerger::SetPointersMerger(void* mem)
261261
{
262-
computePointerWithAlignment(mem, mSliceTrackInfos, mNMaxSliceTracks);
262+
computePointerWithAlignment(mem, mSliceTrackInfos, mNTotalSliceTracks);
263263
computePointerWithAlignment(mem, mSliceTrackInfoIndex, NSLICES * 2 + 1);
264264
if (mRec->GetParam().rec.nonConsecutiveIDs) {
265265
computePointerWithAlignment(mem, mGlobalClusterIDs, mNMaxOutputTrackClusters);
266266
}
267267

268268
void* memBase = mem;
269-
computePointerWithAlignment(mem, mBorderMemory, 2 * mNMaxSliceTracks); // MergeBorders & Resolve
270-
computePointerWithAlignment(mem, mBorderRangeMemory, 2 * mNMaxSliceTracks);
269+
computePointerWithAlignment(mem, mBorderMemory, 2 * mNTotalSliceTracks); // MergeBorders & Resolve
270+
computePointerWithAlignment(mem, mBorderRangeMemory, 2 * mNTotalSliceTracks);
271271
int nTracks = 0;
272272
for (int iSlice = 0; iSlice < NSLICES; iSlice++) {
273273
const int n = mRec->GetParam().rec.tpc.mergerReadFromTrackerDirectly ? *mRec->GetConstantMem().tpcTrackers[iSlice].NTracks() : mkSlices[iSlice]->NTracks();
@@ -276,8 +276,8 @@ void* GPUTPCGMMerger::SetPointersMerger(void* mem)
276276
mBorderRange[iSlice] = mBorderRangeMemory + 2 * nTracks;
277277
nTracks += n;
278278
}
279-
computePointerWithAlignment(mem, mTrackLinks, mNMaxSliceTracks);
280-
computePointerWithAlignment(mem, mTrackCCRoots, mNMaxSliceTracks);
279+
computePointerWithAlignment(mem, mTrackLinks, mNTotalSliceTracks);
280+
computePointerWithAlignment(mem, mTrackCCRoots, mNTotalSliceTracks);
281281
void* memMax = mem;
282282
mem = memBase;
283283
computePointerWithAlignment(mem, mTrackIDs, mNMaxTracks); // UnpackResetIds - RefitSliceTracks - UnpackSliceGlobal
@@ -391,19 +391,23 @@ void GPUTPCGMMerger::RegisterMemoryAllocation()
391391

392392
void GPUTPCGMMerger::SetMaxData(const GPUTrackingInOutPointers& io)
393393
{
394-
mNMaxSliceTracks = 0;
394+
mNTotalSliceTracks = 0;
395395
mNClusters = 0;
396396
mNMaxSingleSliceTracks = 0;
397397
for (int iSlice = 0; iSlice < NSLICES; iSlice++) {
398398
unsigned int ntrk = mRec->GetParam().rec.tpc.mergerReadFromTrackerDirectly ? *mRec->GetConstantMem().tpcTrackers[iSlice].NTracks() : mkSlices[iSlice]->NTracks();
399-
mNMaxSliceTracks += ntrk;
399+
mNTotalSliceTracks += ntrk;
400400
mNClusters += mRec->GetParam().rec.tpc.mergerReadFromTrackerDirectly ? *mRec->GetConstantMem().tpcTrackers[iSlice].NTrackHits() : mkSlices[iSlice]->NTrackClusters();
401401
if (mNMaxSingleSliceTracks < ntrk) {
402402
mNMaxSingleSliceTracks = ntrk;
403403
}
404404
}
405405
mNMaxOutputTrackClusters = mRec->MemoryScalers()->NTPCMergedTrackHits(mNClusters);
406-
mNMaxTracks = mRec->MemoryScalers()->NTPCMergedTracks(mNMaxSliceTracks);
406+
if (CAMath::Abs(Param().polynomialField.GetNominalBz()) < (0.01f * gpu_common_constants::kCLight)) {
407+
mNMaxTracks = mRec->MemoryScalers()->getValue(mNTotalSliceTracks, mNTotalSliceTracks);
408+
} else {
409+
mNMaxTracks = mRec->MemoryScalers()->NTPCMergedTracks(mNTotalSliceTracks);
410+
}
407411
if (io.clustersNative) {
408412
mNMaxClusters = io.clustersNative->nClustersTotal;
409413
} else if (mRec->GetRecoSteps() & GPUDataTypes::RecoStep::TPCSliceTracking) {

GPU/GPUTracking/Merger/GPUTPCGMMerger.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ class GPUTPCGMMerger : public GPUProcessor
232232
int* mTrackLinks;
233233
int* mTrackCCRoots; // root of the connected component of this track
234234

235-
unsigned int mNMaxSliceTracks; // maximum number of incoming slice tracks
235+
unsigned int mNTotalSliceTracks; // maximum number of incoming slice tracks
236236
unsigned int mNMaxTracks; // maximum number of output tracks
237237
unsigned int mNMaxSingleSliceTracks; // max N tracks in one slice
238238
unsigned int mNMaxOutputTrackClusters; // max number of clusters in output tracks (double-counting shared clusters)

0 commit comments

Comments
 (0)