Skip to content

Commit ee97a62

Browse files
committed
GPU: Remove GPUTRDTracker DoTracking function, and do everything via GPUChainTracking
1 parent 2890a96 commit ee97a62

4 files changed

Lines changed: 7 additions & 50 deletions

File tree

Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ void TRDGlobalTracking::run(ProcessingContext& pc)
328328

329329
// start the tracking
330330
//mTracker->DumpTracks();
331-
mTracker->DoTracking(mChainTracking);
331+
mChainTracking->DoTRDGPUTracking<GPUTRDTrackerKernels::o2Version>(mTracker);
332332
//mTracker->DumpTracks();
333333

334334
// finished tracking, now collect the output

GPU/GPUTracking/Global/GPUChainTrackingTRD.cxx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,17 @@ int GPUChainTracking::DoTRDGPUTracking(GPUTRDTracker* externalInstance)
7878
throw std::runtime_error("Must not provide external instance that does not match template type");
7979
}
8080
}
81+
Tracker->PrepareTracking(this);
8182

8283
const auto& threadContext = GetThreadContext();
8384
SetupGPUProcessor(Tracker, false);
84-
TrackerShadow->OverrideGPUGeometry(reinterpret_cast<GPUTRDGeometry*>(mFlatObjectsDevice.mCalibObjects.trdGeometry));
85+
if (doGPU) {
86+
TrackerShadow->OverrideGPUGeometry(reinterpret_cast<GPUTRDGeometry*>(mFlatObjectsDevice.mCalibObjects.trdGeometry));
87+
WriteToConstantMemory(RecoStep::TRDTracking, (char*)&processors()->trdTrackerGPU - (char*)processors(), TrackerShadow, sizeof(*TrackerShadow), 0);
88+
}
8589

86-
WriteToConstantMemory(RecoStep::TRDTracking, (char*)&processors()->trdTrackerGPU - (char*)processors(), TrackerShadow, sizeof(*TrackerShadow), 0);
8790
TransferMemoryResourcesToGPU(RecoStep::TRDTracking, Tracker, 0);
88-
89-
runKernel<GPUTRDTrackerKernels>(GetGridAuto(0), krnlRunRangeNone, krnlEventNone, nullptr);
91+
runKernel<GPUTRDTrackerKernels, I>(GetGridAuto(0), krnlRunRangeNone, krnlEventNone, externalInstance);
9092
TransferMemoryResourcesToHost(RecoStep::TRDTracking, Tracker, 0);
9193
SynchronizeStream(0);
9294

GPU/GPUTracking/TRDTracking/GPUTRDTracker.cxx

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -246,50 +246,6 @@ void GPUTRDTracker_t<TRDTRK, PROP>::PrepareTracking(GPUChainTracking* chainTrack
246246
if (mGenerateSpacePoints) {
247247
chainTracking->mIOPtrs.trdSpacePoints = mSpacePoints;
248248
}
249-
}
250-
251-
template <class TRDTRK, class PROP>
252-
void GPUTRDTracker_t<TRDTRK, PROP>::DoTracking(GPUChainTracking* chainTracking)
253-
{
254-
//--------------------------------------------------------------------
255-
// Steering function for the tracking
256-
//--------------------------------------------------------------------
257-
258-
PrepareTracking(chainTracking);
259-
260-
auto timeStart = std::chrono::high_resolution_clock::now();
261-
262-
if (mRec->GetRecoStepsGPU() & GPUDataTypes::RecoStep::TRDTracking) {
263-
chainTracking->DoTRDGPUTracking<0>();
264-
} else {
265-
#ifdef WITH_OPENMP
266-
#pragma omp parallel for num_threads(mRec->GetProcessingSettings().ompThreads)
267-
for (int iTrk = 0; iTrk < mNTracks; ++iTrk) {
268-
if (omp_get_num_threads() > mMaxThreads) {
269-
GPUError("Number of parallel threads too high, aborting tracking");
270-
// break statement not possible in OpenMP for loop
271-
iTrk = mNTracks;
272-
continue;
273-
}
274-
DoTrackingThread(iTrk, omp_get_thread_num());
275-
}
276-
#else
277-
for (int iTrk = 0; iTrk < mNTracks; ++iTrk) {
278-
DoTrackingThread(iTrk);
279-
}
280-
#endif
281-
}
282-
283-
auto duration = std::chrono::high_resolution_clock::now() - timeStart;
284-
(void)duration; // suppress warning about unused variable
285-
/*
286-
std::cout << "---> -----> -------> ---------> ";
287-
std::cout << "Time for event " << mNEvents << ": " << std::chrono::duration_cast<std::chrono::microseconds>(duration).count() << " us ";
288-
std::cout << "nTracks: " << mNTracks;
289-
std::cout << " nTracklets: " << GetConstantMem()->ioPtrs.nTRDTracklets;
290-
std::cout << std::endl;
291-
*/
292-
//DumpTracks();
293249
mNEvents++;
294250
}
295251

GPU/GPUTracking/TRDTracking/GPUTRDTracker.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ class GPUTRDTracker_t : public GPUProcessor
6666
void* SetPointersTracks(void* base);
6767

6868
void PrepareTracking(GPUChainTracking* chainTracking);
69-
void DoTracking(GPUChainTracking* chainTracking);
7069
void SetNCandidates(int n);
7170
void PrintSettings() const;
7271
bool IsInitialized() const { return mIsInitialized; }

0 commit comments

Comments
 (0)