@@ -91,7 +91,7 @@ struct MergeLooperParam {
9191#include " GPUMemorySizeScalers.h"
9292
9393GPUTPCGMMerger::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
260260void * 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
392392void 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) {
0 commit comments