Skip to content

Commit b57b586

Browse files
committed
GPU: Improve buffer estimates when processing CTF data with cluster rejection
1 parent 307788d commit b57b586

4 files changed

Lines changed: 6 additions & 3 deletions

File tree

GPU/GPUTracking/DataTypes/GPUMemorySizeScalers.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ struct GPUMemorySizeScalers {
4343
double tpcTrackletsPerStartHit = 0.8;
4444
double tpcTrackletHitsPerHit = 5;
4545
double tpcSectorTracksPerHit = 0.02;
46-
double tpcSectorTrackHitsPerHit = 0.8f;
46+
double tpcSectorTrackHitsPerHit = 0.8;
47+
double tpcSectorTrackHitsPerHitWithRejection = 1.0;
4748
double tpcMergedTrackPerSliceTrack = 0.9;
4849
double tpcMergedTrackHitPerSliceHit = 1.1;
4950
size_t tpcCompressedUnattachedHitsBase1024[3] = {900, 900, 500}; // No ratio, but integer fraction of 1024 for exact computation
@@ -77,7 +78,7 @@ struct GPUMemorySizeScalers {
7778
inline size_t NTPCTracklets(size_t tpcHits) { return getValue(tpcMaxTracklets, NTPCStartHits(tpcHits) * tpcTrackletsPerStartHit); }
7879
inline size_t NTPCTrackletHits(size_t tpcHits) { return getValue(tpcMaxTrackletHits, hitOffset + tpcHits * tpcTrackletHitsPerHit); }
7980
inline size_t NTPCSectorTracks(size_t tpcHits) { return getValue(tpcMaxSectorTracks, tpcHits * tpcSectorTracksPerHit); }
80-
inline size_t NTPCSectorTrackHits(size_t tpcHits) { return getValue(tpcMaxSectorTrackHits, tpcHits * tpcSectorTrackHitsPerHit); }
81+
inline size_t NTPCSectorTrackHits(size_t tpcHits, unsigned char withRejection = 0) { return getValue(tpcMaxSectorTrackHits, tpcHits * (withRejection ? tpcSectorTrackHitsPerHitWithRejection : tpcSectorTrackHitsPerHit)); }
8182
inline size_t NTPCMergedTracks(size_t tpcSliceTracks) { return getValue(tpcMaxMergedTracks, tpcSliceTracks * (conservative ? 1.0 : tpcMergedTrackPerSliceTrack)); }
8283
inline size_t NTPCMergedTrackHits(size_t tpcSliceTrackHitss) { return getValue(tpcMaxMergedTrackHits, tpcSliceTrackHitss * tpcMergedTrackHitPerSliceHit); }
8384
inline size_t NTPCUnattachedHitsBase1024(int type) { return (returnMaxVal || conservative) ? 1024 : std::min<size_t>(1024, tpcCompressedUnattachedHitsBase1024[type] * factor * temporaryFactor); }

GPU/GPUTracking/Definitions/GPUSettingsList.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ AddOption(forceMemoryPoolSize, unsigned long, 1, "memSize", 0, "Force size of al
148148
AddOption(forceHostMemoryPoolSize, unsigned long, 0, "hostMemSize", 0, "Force size of allocated host page locked host memory (overriding memSize)", min(0ul))
149149
AddOption(memoryScalingFactor, float, 1.f, "", 0, "Factor to apply to all memory scalers")
150150
AddOption(conservativeMemoryEstimate, bool, false, "", 0, "Use some more conservative defaults for larger buffers during TPC processing")
151+
AddOption(tpcInputWithClusterRejection, unsigned char, 0, "", 0, "Indicate whether the TPC input is CTF data with cluster rejection, to tune buffer estimations")
151152
AddOption(forceMaxMemScalers, unsigned long, 0, "", 0, "Force using the maximum values for all buffers, Set a value n > 1 to rescale all maximums to a memory size of n")
152153
AddOption(registerStandaloneInputMemory, bool, false, "registerInputMemory", 0, "Automatically register input memory buffers for the GPU")
153154
AddOption(ompThreads, int, -1, "omp", 't', "Number of OMP threads to run (-1: all)", min(-1), message("Using %s OMP threads"))

GPU/GPUTracking/SliceTracker/GPUTPCTracker.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ void GPUTPCTracker::SetMaxData(const GPUTrackingInOutPointers& io)
163163
mNMaxTracklets = mRec->MemoryScalers()->NTPCTracklets(mData.NumberOfHits());
164164
mNMaxRowHits = mRec->MemoryScalers()->NTPCTrackletHits(mData.NumberOfHits());
165165
mNMaxTracks = mRec->MemoryScalers()->NTPCSectorTracks(mData.NumberOfHits());
166-
mNMaxTrackHits = mRec->MemoryScalers()->NTPCSectorTrackHits(mData.NumberOfHits());
166+
mNMaxTrackHits = mRec->MemoryScalers()->NTPCSectorTrackHits(mData.NumberOfHits(), mRec->GetProcessingSettings().tpcInputWithClusterRejection);
167167
#ifdef GPUCA_SORT_STARTHITS_GPU
168168
if (mRec->IsGPU()) {
169169
if (mNMaxStartHits > mNMaxRowStartHits * GPUCA_ROW_COUNT) {

prodtests/full-system-test/dpl-workflow.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ else
108108
ITS_CONFIG_KEY+="ITSVertexerParam.phiCut=0.5;ITSVertexerParam.clusterContributorsCut=3;ITSVertexerParam.tanLambdaCut=0.2;"
109109
fi
110110
fi
111+
[[ $CTFINPUT == 1 ]] && GPU_CONFIG_KEY+="GPU_proc.tpcInputWithClusterRejection=1;"
111112
[[ ! -z $NTRDTRKTHREADS ]] && TRD_CONFIG_KEY+="GPU_proc.ompThreads=$NTRDTRKTHREADS;"
112113
[[ ! -z $NGPURECOTHREADS ]] && GPU_CONFIG_KEY+="GPU_proc.ompThreads=$NGPURECOTHREADS;"
113114
[[ ! -z $NMFTTHREADS ]] && MFT_CONFIG+=" --nThreads $NMFTTHREADS"

0 commit comments

Comments
 (0)