Skip to content

Commit 4580149

Browse files
committed
GPU: Add additional optional debbug dumps for validation
1 parent f178994 commit 4580149

File tree

7 files changed

+47
-28
lines changed

7 files changed

+47
-28
lines changed

GPU/GPUTracking/Definitions/GPUSettingsList.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ AddOption(trdNCandidates, int32_t, 3, "", 0, "Number of branching track candidat
295295
AddOption(trdTrackModelO2, bool, false, "", 0, "Use O2 track model instead of GPU track model for TRD tracking")
296296
AddOption(debugLevel, int32_t, -1, "debug", 'd', "Set debug level (-2 = silent, -1 = autoselect (-2 for O2, 0 for standalone))")
297297
AddOption(allocDebugLevel, int32_t, 0, "allocDebug", 0, "Some debug output for memory allocations (without messing with normal debug level)")
298-
AddOption(debugMask, uint32_t, 262143, "", 0, "Mask for debug output dumps to file")
298+
AddOption(debugMask, uint32_t, (1 << 18) - 1, "debugMask", 0, "Mask for debug output dumps to file")
299299
AddOption(debugLogSuffix, std::string, "", "debugSuffix", 0, "Suffix for debug log files with --debug 6")
300300
AddOption(serializeGPU, int8_t, 0, "", 0, "Synchronize after each kernel call (bit 1) and DMA transfer (bit 2) and identify failures")
301301
AddOption(recoTaskTiming, bool, 0, "", 0, "Perform summary timing after whole reconstruction tasks")

GPU/GPUTracking/Global/GPUChainTrackingDebug.h

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,29 @@ namespace o2::gpu
2323
{
2424
// NOTE: Values below 262144 are activated by default with --debug 6 in GPUSettingsList.h::debugMask
2525
enum GPUChainTrackingDebugFlags : uint32_t {
26-
TPCSectorTrackingData = 1,
27-
TPCPreLinks = 2,
28-
TPCLinks = 4,
29-
TPCStartHits = 8,
30-
TPCTracklets = 16,
31-
TPCSectorTracks = 32,
32-
TPCHitWeights = 256,
33-
TPCCompressedClusters = 512,
34-
TPCDecompressedClusters = 1024,
35-
TPCMergingRanges = 2048,
36-
TPCMergingSectorTracks = 4096,
37-
TPCMergingMergedTracks = 8192,
38-
TPCMergingCollectedTracks = 16384,
39-
TPCMergingCE = 32768,
40-
TPCMergingRefit = 65536,
41-
TPCClustererClusters = 131072,
42-
TPCClusterer = 262144,
43-
TPCClustererDigits = 262144 << 1,
44-
TPCClustererPeaks = 262144 << 2,
45-
TPCClustererSuppressedPeaks = 262144 << 3,
46-
TPCClustererChargeMap = 262144 << 4,
47-
TPCClustererZeroedCharges = 262144 << 5
26+
TPCSectorTrackingData = 1 << 0,
27+
TPCPreLinks = 1 << 1,
28+
TPCLinks = 1 << 2,
29+
TPCStartHits = 1 << 3,
30+
TPCTracklets = 1 << 4,
31+
TPCSectorTracks = 1 << 5,
32+
TPCHitWeights = 1 << 6,
33+
TPCMergingRanges = 1 << 7,
34+
TPCMergingSectorTracks = 1 << 8,
35+
TPCMergingMatching = 1 << 9,
36+
TPCMergingCollectedTracks = 1 << 10,
37+
TPCMergingCE = 1 << 11,
38+
TPCMergingPrepareFit = 1 << 12,
39+
TPCMergingRefit = 1 << 13,
40+
TPCMergingLoopers = 1 << 14,
41+
TPCCompressedClusters = 1 << 15,
42+
TPCDecompressedClusters = 1 << 16,
43+
TPCClustererClusters = 1 << 17,
44+
TPCClustererDigits = 1 << 18,
45+
TPCClustererPeaks = 1 << 19,
46+
TPCClustererSuppressedPeaks = 1 << 20,
47+
TPCClustererChargeMap = 1 << 21,
48+
TPCClustererZeroedCharges = 1 << 22
4849
};
4950

5051
template <class T, class S, typename... Args>

GPU/GPUTracking/Global/GPUChainTrackingMerger.cxx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
143143
runKernel<GPUTPCGMMergerMergeWithinPrepare>(GetGridAuto(0, deviceType));
144144
RunTPCTrackingMerger_MergeBorderTracks(1, 0, deviceType);
145145
RunTPCTrackingMerger_Resolve(0, 1, deviceType);
146-
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingMergedTracks, doGPU, Merger, &GPUTPCGMMerger::DumpMergedWithinSectors, *mDebugFile);
146+
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingMatching, doGPU, Merger, &GPUTPCGMMerger::DumpMergedWithinSectors, *mDebugFile);
147147

148148
runKernel<GPUTPCGMMergerClearLinks>(GetGridAuto(0, deviceType), false);
149149
runKernel<GPUMemClean16>({{1, -WarpSize(), 0, deviceType, RecoStep::TPCMerging}}, MergerShadowAll.TmpCounter(), 2 * NSECTORS * sizeof(*MergerShadowAll.TmpCounter()));
@@ -158,7 +158,7 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
158158
runKernel<GPUTPCGMMergerMergeSectorsPrepare>(GetGridBlk(std::max(2u, numBlocks), 0, deviceType), 0, 1, 1);
159159
RunTPCTrackingMerger_MergeBorderTracks(0, -1, deviceType);
160160
RunTPCTrackingMerger_Resolve(0, 1, deviceType);
161-
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingMergedTracks, doGPU, Merger, &GPUTPCGMMerger::DumpMergedBetweenSectors, *mDebugFile);
161+
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingMatching, doGPU, Merger, &GPUTPCGMMerger::DumpMergedBetweenSectors, *mDebugFile);
162162

163163
runKernel<GPUMemClean16>({{1, -WarpSize(), 0, deviceType, RecoStep::TPCMerging}}, MergerShadowAll.TmpCounter(), 2 * NSECTORS * sizeof(*MergerShadowAll.TmpCounter()));
164164

@@ -202,7 +202,7 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
202202
runKernel<GPUTPCGMMergerPrepareClusters, 1>(GetGridAuto(0, deviceType));
203203
runKernel<GPUTPCGMMergerPrepareClusters, 2>(GetGridAuto(0, deviceType));
204204

205-
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingRefit, doGPU, Merger, &GPUTPCGMMerger::DumpFitPrepare, *mDebugFile);
205+
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingPrepareFit, doGPU, Merger, &GPUTPCGMMerger::DumpFitPrepare, *mDebugFile);
206206

207207
if (doGPU) {
208208
CondWaitEvent(waitForTransfer, &mEvents->single);
@@ -240,6 +240,7 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
240240
}
241241
runKernel<GPUTPCGMMergerMergeLoopers, 1>(GetGridAuto(0, deviceType));
242242
runKernel<GPUTPCGMMergerMergeLoopers, 2>(doGPU ? GetGrid(Merger.Memory()->nLooperMatchCandidates, 0, deviceType) : GetGridAuto(0, deviceType));
243+
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingLoopers, Merger, &GPUTPCGMMerger::DumpLoopers, *mDebugFile);
243244
}
244245
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingRefit, doGPU, Merger, &GPUTPCGMMerger::DumpFinal, *mDebugFile);
245246

GPU/GPUTracking/Global/GPUChainTrackingSectorTracker.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,9 @@ int32_t GPUChainTracking::RunTPCTrackingSectors_internal()
176176
}
177177

178178
if (GetProcessingSettings().debugLevel >= 6) {
179-
*mDebugFile << "\n\nReconstruction: Sector " << iSector << "/" << NSECTORS << std::endl;
179+
if ((GetProcessingSettings().debugMask & 63)) {
180+
*mDebugFile << "\n\nReconstruction: Sector " << iSector << "/" << NSECTORS << std::endl;
181+
}
180182
if (GetProcessingSettings().debugMask & GPUChainTrackingDebugFlags::TPCSectorTrackingData) {
181183
if (doGPU) {
182184
TransferMemoryResourcesToHost(RecoStep::TPCSectorTracking, &trk, -1, true);

GPU/GPUTracking/Merger/GPUTPCGMMergedTrack.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class GPUTPCGMMergedTrack
9595
GPUd() void SetFlags(uint8_t v) { mFlags = v; }
9696
GPUd() void SetLegs(uint8_t v) { mLegs = v; }
9797
GPUd() uint8_t Legs() const { return mLegs; }
98+
GPUd() uint8_t Flags() const { return mFlags; }
9899

99100
GPUd() const gputpcgmmergertypes::GPUTPCOuterParam& OuterParam() const { return mOuterParam; }
100101
GPUd() gputpcgmmergertypes::GPUTPCOuterParam& OuterParam() { return mOuterParam; }

GPU/GPUTracking/Merger/GPUTPCGMMerger.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ class GPUTPCGMMerger : public GPUProcessor
201201
void DumpFitPrepare(std::ostream& out) const;
202202
void DumpRefit(std::ostream& out) const;
203203
void DumpFinal(std::ostream& out) const;
204+
void DumpLoopers(std::ostream& out) const;
204205

205206
template <int32_t mergeType>
206207
void MergedTrackStreamerInternal(const GPUTPCGMBorderTrack& b1, const GPUTPCGMBorderTrack& b2, const char* name, int32_t sector1, int32_t sector2, int32_t mergeMode, float weight, float frac) const;

GPU/GPUTracking/Merger/GPUTPCGMMergerDump.cxx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,24 @@ void GPUTPCGMMerger::DumpRefit(std::ostream& out) const
204204
const auto& po = trk.OuterParam();
205205
out << " Track " << i << ": OK " << trk.OK() << " Alpha " << trk.GetAlpha() << " X " << p.GetX() << " offset " << p.GetTZOffset() << " Y " << p.GetY() << " Z " << p.GetZ() << " SPhi " << p.GetSinPhi() << " Tgl " << p.GetDzDs() << " QPt " << p.GetQPt() << " NCl " << trk.NClusters() << " / " << trk.NClustersFitted() << " Cov " << p.GetErr2Y() << "/" << p.GetErr2Z()
206206
<< " dEdx " << (trk.OK() && Param().dodEdxEnabled ? mOutputTracksdEdx[i].dEdxTotTPC : -1.f) << "/" << (trk.OK() && Param().dodEdxEnabled ? mOutputTracksdEdx[i].dEdxMaxTPC : -1.f)
207-
<< " Outer " << po.P[0] << "/" << po.P[1] << "/" << po.P[2] << "/" << po.P[3] << "/" << po.P[4] << "\n";
207+
<< " Outer " << po.P[0] << "/" << po.P[1] << "/" << po.P[2] << "/" << po.P[3] << "/" << po.P[4]
208+
<< " NFitted " << trk.NClustersFitted() << " legs " << (int)trk.Legs() << " flags " << (int)trk.Flags() << "\n";
208209
}
209210
out << std::setprecision(ss);
210211
}
211212

213+
void GPUTPCGMMerger::DumpLoopers(std::ostream& out) const
214+
{
215+
out << "\n TPC Merger Looper Afterburner\n";
216+
for (uint32_t i = 0; i < mMemory->nMergedTracks; i++) {
217+
if (i && i % 100 == 0) {
218+
out << "\n";
219+
}
220+
out << (int)mOutputTracks[i].MergedLooper() << " ";
221+
}
222+
out << "\n";
223+
}
224+
212225
void GPUTPCGMMerger::DumpFinal(std::ostream& out) const
213226
{
214227
out << "\nTPC Merger Finalized\n";

0 commit comments

Comments
 (0)