Skip to content

Commit 0cd57a1

Browse files
committed
GPU: Cleanup: Can now assume that slice data are allways on GPU
1 parent 9a4e708 commit 0cd57a1

File tree

5 files changed

+13
-40
lines changed

5 files changed

+13
-40
lines changed

GPU/GPUTracking/Global/GPUChainTrackingSliceTracker.cxx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ int32_t GPUChainTracking::RunTPCTrackingSlices_internal()
6464
GPUInfo("Running TPC Slice Tracker");
6565
}
6666
bool doGPU = GetRecoStepsGPU() & RecoStep::TPCSliceTracking;
67-
bool doSliceDataOnGPU = processors()->tpcTrackers[0].SliceDataOnGPU();
6867
if (!param().par.earlyTpcTransform) {
6968
for (uint32_t i = 0; i < NSLICES; i++) {
7069
processors()->tpcTrackers[i].Data().SetClusterData(nullptr, mIOPtrs.clustersNative->nClustersSector[i], mIOPtrs.clustersNative->clusterOffset[i][0]);
@@ -173,7 +172,7 @@ int32_t GPUChainTracking::RunTPCTrackingSlices_internal()
173172
if (GetProcessingSettings().debugLevel >= 3) {
174173
GPUInfo("Creating Slice Data (Slice %d)", iSlice);
175174
}
176-
if (doSliceDataOnGPU) {
175+
if (doGPU) {
177176
TransferMemoryResourcesToGPU(RecoStep::TPCSliceTracking, &trk, useStream);
178177
runKernel<GPUTPCCreateSliceData>({GetGridBlk(GPUCA_ROW_COUNT, useStream), {iSlice}, {nullptr, streamInit[useStream] ? nullptr : &mEvents->init}});
179178
streamInit[useStream] = true;
@@ -194,7 +193,7 @@ int32_t GPUChainTracking::RunTPCTrackingSlices_internal()
194193
if (GetProcessingSettings().debugLevel >= 6) {
195194
*mDebugFile << "\n\nReconstruction: Slice " << iSlice << "/" << NSLICES << std::endl;
196195
if (GetProcessingSettings().debugMask & 1) {
197-
if (doSliceDataOnGPU) {
196+
if (doGPU) {
198197
TransferMemoryResourcesToHost(RecoStep::TPCSliceTracking, &trk, -1, true);
199198
}
200199
trk.DumpSliceData(*mDebugFile);
@@ -205,15 +204,10 @@ int32_t GPUChainTracking::RunTPCTrackingSlices_internal()
205204
if (GetProcessingSettings().debugLevel >= 3) {
206205
GPUInfo("Copying Slice Data to GPU and initializing temporary memory");
207206
}
208-
if (GetProcessingSettings().keepDisplayMemory && !doSliceDataOnGPU) {
209-
memset((void*)trk.Data().HitWeights(), 0, trkShadow.Data().NumberOfHitsPlusAlign() * sizeof(*trkShadow.Data().HitWeights()));
210-
} else {
211-
runKernel<GPUMemClean16>(GetGridAutoStep(useStream, RecoStep::TPCSliceTracking), trkShadow.Data().HitWeights(), trkShadow.Data().NumberOfHitsPlusAlign() * sizeof(*trkShadow.Data().HitWeights()));
212-
}
207+
runKernel<GPUMemClean16>(GetGridAutoStep(useStream, RecoStep::TPCSliceTracking), trkShadow.Data().HitWeights(), trkShadow.Data().NumberOfHitsPlusAlign() * sizeof(*trkShadow.Data().HitWeights()));
213208

214-
// Copy Data to GPU Global Memory
215-
if (!doSliceDataOnGPU) {
216-
TransferMemoryResourcesToGPU(RecoStep::TPCSliceTracking, &trk, useStream);
209+
if (!doGPU) {
210+
TransferMemoryResourcesToGPU(RecoStep::TPCSliceTracking, &trk, useStream); // Copy Data to GPU Global Memory
217211
}
218212
if (GPUDebug("Initialization (3)", useStream)) {
219213
throw std::runtime_error("memcpy failure");

GPU/GPUTracking/SliceTracker/GPUTPCSliceData.cxx

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,6 @@ void GPUTPCSliceData::SetMaxData()
5858
mNumberOfHitsPlusAlign = GPUProcessor::nextMultipleOf<(kVectorAlignment > GPUCA_ROWALIGNMENT ? kVectorAlignment : GPUCA_ROWALIGNMENT) / sizeof(int32_t)>(hitMemCount);
5959
}
6060

61-
void* GPUTPCSliceData::SetPointersInput(void* mem, bool idsOnGPU, bool sliceDataOnGPU)
62-
{
63-
if (sliceDataOnGPU) {
64-
return mem;
65-
}
66-
const int32_t firstHitInBinSize = GetGridSize(mNumberOfHits, GPUCA_ROW_COUNT) + GPUCA_ROW_COUNT * GPUCA_ROWALIGNMENT / sizeof(int32_t);
67-
GPUProcessor::computePointerWithAlignment(mem, mHitData, mNumberOfHitsPlusAlign);
68-
GPUProcessor::computePointerWithAlignment(mem, mFirstHitInBin, firstHitInBinSize);
69-
if (idsOnGPU) {
70-
mem = SetPointersClusterIds(mem, false); // Hijack the allocation from SetPointersClusterIds
71-
}
72-
return mem;
73-
}
74-
7561
void* GPUTPCSliceData::SetPointersLinks(void* mem)
7662
{
7763
GPUProcessor::computePointerWithAlignment(mem, mLinkUpData, mNumberOfHitsPlusAlign);
@@ -85,10 +71,13 @@ void* GPUTPCSliceData::SetPointersWeights(void* mem)
8571
return mem;
8672
}
8773

88-
void* GPUTPCSliceData::SetPointersScratch(void* mem, bool idsOnGPU, bool sliceDataOnGPU)
74+
void* GPUTPCSliceData::SetPointersScratch(void* mem, bool idsOnGPU)
8975
{
90-
if (sliceDataOnGPU) {
91-
mem = SetPointersInput(mem, idsOnGPU, false);
76+
const int32_t firstHitInBinSize = GetGridSize(mNumberOfHits, GPUCA_ROW_COUNT) + GPUCA_ROW_COUNT * GPUCA_ROWALIGNMENT / sizeof(int32_t);
77+
GPUProcessor::computePointerWithAlignment(mem, mHitData, mNumberOfHitsPlusAlign);
78+
GPUProcessor::computePointerWithAlignment(mem, mFirstHitInBin, firstHitInBinSize);
79+
if (idsOnGPU) {
80+
mem = SetPointersClusterIds(mem, false); // Hijack the allocation from SetPointersClusterIds
9281
}
9382
return mem;
9483
}

GPU/GPUTracking/SliceTracker/GPUTPCSliceData.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ class GPUTPCSliceData
3838
void InitializeRows(const GPUParam& p);
3939
void SetMaxData();
4040
void SetClusterData(const GPUTPCClusterData* data, int32_t nClusters, int32_t clusterIdOffset);
41-
void* SetPointersInput(void* mem, bool idsOnGPU, bool sliceDataOnGPU);
42-
void* SetPointersScratch(void* mem, bool idsOnGPU, bool sliceDataOnGPU);
41+
void* SetPointersScratch(void* mem, bool idsOnGPU);
4342
void* SetPointersLinks(void* mem);
4443
void* SetPointersWeights(void* mem);
4544
void* SetPointersClusterIds(void* mem, bool idsOnGPU);

GPU/GPUTracking/SliceTracker/GPUTPCTracker.cxx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,9 @@ void GPUTPCTracker::InitializeProcessor()
6262
SetupCommonMemory();
6363
}
6464

65-
bool GPUTPCTracker::SliceDataOnGPU()
66-
{
67-
return (mRec->GetRecoStepsGPU() & GPUDataTypes::RecoStep::TPCSliceTracking) && (mRec->GetRecoStepsGPU() & GPUDataTypes::RecoStep::TPCConversion) && (mRec->GetConstantMem().ioPtrs.clustersNative || mRec->GetConstantMem().ioPtrs.tpcZS || mRec->GetConstantMem().ioPtrs.tpcPackedDigits);
68-
}
69-
70-
void* GPUTPCTracker::SetPointersDataInput(void* mem) { return mData.SetPointersInput(mem, mRec->GetRecoStepsGPU() & GPUDataTypes::RecoStep::TPCMerging, SliceDataOnGPU()); }
7165
void* GPUTPCTracker::SetPointersDataLinks(void* mem) { return mData.SetPointersLinks(mem); }
7266
void* GPUTPCTracker::SetPointersDataWeights(void* mem) { return mData.SetPointersWeights(mem); }
73-
void* GPUTPCTracker::SetPointersDataScratch(void* mem) { return mData.SetPointersScratch(mem, mRec->GetRecoStepsGPU() & GPUDataTypes::RecoStep::TPCMerging, SliceDataOnGPU()); }
67+
void* GPUTPCTracker::SetPointersDataScratch(void* mem) { return mData.SetPointersScratch(mem, mRec->GetRecoStepsGPU() & GPUDataTypes::RecoStep::TPCMerging); }
7468
void* GPUTPCTracker::SetPointersDataRows(void* mem) { return mData.SetPointersRows(mem); }
7569

7670
void* GPUTPCTracker::SetPointersScratch(void* mem)
@@ -108,7 +102,6 @@ void GPUTPCTracker::RegisterMemoryAllocation()
108102
GPUMemoryReuse reLinks{reuseCondition, GPUMemoryReuse::REUSE_1TO1, GPUMemoryReuse::TrackerDataLinks, (uint16_t)(mISlice % mRec->GetProcessingSettings().nStreams)};
109103
mMemoryResLinks = mRec->RegisterMemoryAllocation(this, &GPUTPCTracker::SetPointersDataLinks, GPUMemoryResource::MEMORY_SCRATCH | GPUMemoryResource::MEMORY_STACK, "TPCSliceLinks", reLinks);
110104
mMemoryResSliceScratch = mRec->RegisterMemoryAllocation(this, &GPUTPCTracker::SetPointersDataScratch, GPUMemoryResource::MEMORY_SCRATCH | GPUMemoryResource::MEMORY_STACK | GPUMemoryResource::MEMORY_CUSTOM, "TPCSliceScratch");
111-
mMemoryResSliceInput = mRec->RegisterMemoryAllocation(this, &GPUTPCTracker::SetPointersDataInput, GPUMemoryResource::MEMORY_INPUT | GPUMemoryResource::MEMORY_STACK | GPUMemoryResource::MEMORY_CUSTOM, "TPCSliceInput");
112105
GPUMemoryReuse reWeights{reuseCondition, GPUMemoryReuse::REUSE_1TO1, GPUMemoryReuse::TrackerDataWeights, (uint16_t)(mISlice % mRec->GetProcessingSettings().nStreams)};
113106
mRec->RegisterMemoryAllocation(this, &GPUTPCTracker::SetPointersDataWeights, GPUMemoryResource::MEMORY_SCRATCH | GPUMemoryResource::MEMORY_STACK, "TPCSliceWeights", reWeights);
114107
GPUMemoryReuse reScratch{reuseCondition, GPUMemoryReuse::REUSE_1TO1, GPUMemoryReuse::TrackerScratch, (uint16_t)(mISlice % mRec->GetProcessingSettings().nStreams)};

GPU/GPUTracking/SliceTracker/GPUTPCTracker.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,6 @@ class GPUTPCTracker : public GPUProcessor
114114
}
115115

116116
void SetupCommonMemory();
117-
bool SliceDataOnGPU();
118-
void* SetPointersDataInput(void* mem);
119117
void* SetPointersDataLinks(void* mem);
120118
void* SetPointersDataWeights(void* mem);
121119
void* SetPointersDataScratch(void* mem);

0 commit comments

Comments
 (0)