Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -14,88 +14,6 @@

#if defined(GPUCA_SPECIALIZE_THRUST_SORTS) && !defined(GPUCA_GPUCODE_COMPILEKERNELS)

namespace o2::gpu::internal
{
namespace // anonymous
{
struct MergeBorderTracks_compMax {
GPUd() bool operator()(const GPUTPCGMBorderRange& a, const GPUTPCGMBorderRange& b)
{
return GPUCA_DETERMINISTIC_CODE((a.fMax != b.fMax) ? (a.fMax < b.fMax) : (a.fId < b.fId), a.fMax < b.fMax);
}
};
struct MergeBorderTracks_compMin {
GPUd() bool operator()(const GPUTPCGMBorderRange& a, const GPUTPCGMBorderRange& b)
{
return GPUCA_DETERMINISTIC_CODE((a.fMin != b.fMin) ? (a.fMin < b.fMin) : (a.fId < b.fId), a.fMin < b.fMin);
}
};

struct GPUTPCGMMergerSortTracks_comp {
const GPUTPCGMMergedTrack* const mCmp;
GPUhd() GPUTPCGMMergerSortTracks_comp(GPUTPCGMMergedTrack* cmp) : mCmp(cmp) {}
GPUd() bool operator()(const int32_t aa, const int32_t bb)
{
const GPUTPCGMMergedTrack& GPUrestrict() a = mCmp[aa];
const GPUTPCGMMergedTrack& GPUrestrict() b = mCmp[bb];
if (a.CCE() != b.CCE()) {
return a.CCE() > b.CCE();
}
if (a.Legs() != b.Legs()) {
return a.Legs() > b.Legs();
}
GPUCA_DETERMINISTIC_CODE( // clang-format off
if (a.NClusters() != b.NClusters()) {
return a.NClusters() > b.NClusters();
} if (CAMath::Abs(a.GetParam().GetQPt()) != CAMath::Abs(b.GetParam().GetQPt())) {
return CAMath::Abs(a.GetParam().GetQPt()) > CAMath::Abs(b.GetParam().GetQPt());
} if (a.GetParam().GetY() != b.GetParam().GetY()) {
return a.GetParam().GetY() > b.GetParam().GetY();
}
return aa > bb;
, // !GPUCA_DETERMINISTIC_CODE
return a.NClusters() > b.NClusters();
) // clang-format on
}
};

struct GPUTPCGMMergerSortTracksQPt_comp {
const GPUTPCGMMergedTrack* const mCmp;
GPUhd() GPUTPCGMMergerSortTracksQPt_comp(GPUTPCGMMergedTrack* cmp) : mCmp(cmp) {}
GPUd() bool operator()(const int32_t aa, const int32_t bb)
{
const GPUTPCGMMergedTrack& GPUrestrict() a = mCmp[aa];
const GPUTPCGMMergedTrack& GPUrestrict() b = mCmp[bb];
GPUCA_DETERMINISTIC_CODE( // clang-format off
if (CAMath::Abs(a.GetParam().GetQPt()) != CAMath::Abs(b.GetParam().GetQPt())) {
return CAMath::Abs(a.GetParam().GetQPt()) > CAMath::Abs(b.GetParam().GetQPt());
} if (a.GetParam().GetY() != b.GetParam().GetY()) {
return a.GetParam().GetY() > b.GetParam().GetY();
}
return a.GetParam().GetZ() > b.GetParam().GetZ();
, // !GPUCA_DETERMINISTIC_CODE
return CAMath::Abs(a.GetParam().GetQPt()) > CAMath::Abs(b.GetParam().GetQPt());
) // clang-format on
}
};

struct GPUTPCGMMergerMergeLoopers_comp {
GPUd() bool operator()(const MergeLooperParam& a, const MergeLooperParam& b)
{
return CAMath::Abs(a.refz) < CAMath::Abs(b.refz);
}
};

struct GPUTPCGMO2OutputSort_comp {
GPUd() bool operator()(const GPUTPCGMMerger::tmpSort& a, const GPUTPCGMMerger::tmpSort& b)
{
return (a.y > b.y);
}
};

} // anonymous namespace
} // namespace o2::gpu::internal

template <>
inline void GPUCA_M_CAT(GPUReconstruction, GPUCA_GPUTYPE)::runKernelBackendTimed<GPUTPCGMMergerMergeBorders, 3>(const krnlSetupTime& _xyz, GPUTPCGMBorderRange* const& range, int32_t const& N, int32_t const& cmpMax)
{
Expand All @@ -109,13 +27,13 @@ inline void GPUCA_M_CAT(GPUReconstruction, GPUCA_GPUTYPE)::runKernelBackendTimed
template <>
inline void GPUCA_M_CAT(GPUReconstruction, GPUCA_GPUTYPE)::runKernelBackendTimed<GPUTPCGMMergerSortTracks, 0>(const krnlSetupTime& _xyz)
{
GPUCommonAlgorithm::sortOnDevice(this, _xyz.x.stream, mProcessorsShadow->tpcMerger.TrackOrderProcess(), processors()->tpcMerger.NOutputTracks(), GPUTPCGMMergerSortTracks_comp(mProcessorsShadow->tpcMerger.OutputTracks()));
GPUCommonAlgorithm::sortOnDevice(this, _xyz.x.stream, mProcessorsShadow->tpcMerger.TrackOrderProcess(), processors()->tpcMerger.NMergedTracks(), GPUTPCGMMergerSortTracks_comp(mProcessorsShadow->tpcMerger.MergedTracks()));
}

template <>
inline void GPUCA_M_CAT(GPUReconstruction, GPUCA_GPUTYPE)::runKernelBackendTimed<GPUTPCGMMergerSortTracksQPt, 0>(const krnlSetupTime& _xyz)
{
GPUCommonAlgorithm::sortOnDevice(this, _xyz.x.stream, mProcessorsShadow->tpcMerger.TrackSort(), processors()->tpcMerger.NOutputTracks(), GPUTPCGMMergerSortTracksQPt_comp(mProcessorsShadow->tpcMerger.OutputTracks()));
GPUCommonAlgorithm::sortOnDevice(this, _xyz.x.stream, mProcessorsShadow->tpcMerger.TrackSort(), processors()->tpcMerger.NMergedTracks(), GPUTPCGMMergerSortTracksQPt_comp(mProcessorsShadow->tpcMerger.MergedTracks()));
}

template <>
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/DataCompression/GPUTPCCompression.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ void GPUTPCCompression::SetMaxData(const GPUTrackingInOutPointers& io)
mMaxClusterFactorBase1024 = mMaxClusters > 100000000 ? mRec->MemoryScalers()->NTPCUnattachedHitsBase1024(mRec->GetParam().rec.tpc.rejectionStrategy) : 1024;
mMaxClustersInCache = mMaxClusters * mMaxClusterFactorBase1024 / 1024;
mMaxTrackClusters = mRec->GetConstantMem().tpcMerger.NOutputTrackClusters(); // TODO: Why is this not using ioPtrs? Could remove GPUConstantMem.h include
mMaxTracks = mRec->GetConstantMem().tpcMerger.NOutputTracks();
mMaxTracks = mRec->GetConstantMem().tpcMerger.NMergedTracks();
if (mMaxClusters % 16) {
mMaxClusters += 16 - (mMaxClusters % 16);
}
Expand Down
10 changes: 5 additions & 5 deletions GPU/GPUTracking/DataCompression/GPUTPCCompressionKernels.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ GPUdii() void GPUTPCCompressionKernels::Thread<GPUTPCCompressionKernels::step1un
const uint32_t iSector = iSectorRow / GPUCA_ROW_COUNT;
const uint32_t iRow = iSectorRow % GPUCA_ROW_COUNT;
const uint32_t idOffset = clusters->clusterOffset[iSector][iRow];
const uint32_t idOffsetOut = clusters->clusterOffset[iSector][iRow] * compressor.mMaxClusterFactorBase1024 / 1024;
const uint32_t idOffsetOut = clusters->clusterOffset[iSector][iRow] * compressor.mMaxClusterFactorBase1024 / 1024; // 32 bit enough for number of clusters per row * 1024
const uint32_t idOffsetOutMax = ((const uint32_t*)clusters->clusterOffset[iSector])[iRow + 1] * compressor.mMaxClusterFactorBase1024 / 1024; // Array out of bounds access is ok, since it goes to the correct nClustersTotal
if (iThread == nThreads - 1) {
smem.nCount = 0;
Expand All @@ -214,7 +214,7 @@ GPUdii() void GPUTPCCompressionKernels::Thread<GPUTPCCompressionKernels::step1un
const uint32_t nn = CAMath::nextMultipleOf<GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCompressionKernels_step1unattached)>(clusters->nClusters[iSector][iRow]);
for (uint32_t i = iThread; i < nn + nThreads; i += nThreads) {
const int32_t idx = idOffset + i;
int32_t cidx = 0;
int32_t storeCluster = 0;
do {
if (i >= clusters->nClusters[iSector][iRow]) {
break;
Expand All @@ -239,13 +239,13 @@ GPUdii() void GPUTPCCompressionKernels::Thread<GPUTPCCompressionKernels::step1un
break;
}
}
cidx = 1;
storeCluster = 1;
} while (false);

GPUbarrier();
int32_t myIndex = work_group_scan_inclusive_add(cidx);
int32_t myIndex = work_group_scan_inclusive_add(storeCluster);
int32_t storeLater = -1;
if (cidx) {
if (storeCluster) {
if (smem.nCount + myIndex <= GPUCA_TPC_COMP_CHUNK_SIZE) {
sortBuffer[smem.nCount + myIndex - 1] = i;
} else {
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/Definitions/GPUSettingsList.h
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ AddOption(trdNCandidates, int32_t, 3, "", 0, "Number of branching track candidat
AddOption(trdTrackModelO2, bool, false, "", 0, "Use O2 track model instead of GPU track model for TRD tracking")
AddOption(debugLevel, int32_t, -1, "debug", 'd', "Set debug level (-2 = silent, -1 = autoselect (-2 for O2, 0 for standalone))")
AddOption(allocDebugLevel, int32_t, 0, "allocDebug", 0, "Some debug output for memory allocations (without messing with normal debug level)")
AddOption(debugMask, uint32_t, 262143, "", 0, "Mask for debug output dumps to file")
AddOption(debugMask, uint32_t, (1 << 18) - 1, "debugMask", 0, "Mask for debug output dumps to file")
AddOption(debugLogSuffix, std::string, "", "debugSuffix", 0, "Suffix for debug log files with --debug 6")
AddOption(serializeGPU, int8_t, 0, "", 0, "Synchronize after each kernel call (bit 1) and DMA transfer (bit 2) and identify failures")
AddOption(recoTaskTiming, bool, 0, "", 0, "Perform summary timing after whole reconstruction tasks")
Expand Down
45 changes: 23 additions & 22 deletions GPU/GPUTracking/Global/GPUChainTrackingDebug.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,29 @@ namespace o2::gpu
{
// NOTE: Values below 262144 are activated by default with --debug 6 in GPUSettingsList.h::debugMask
enum GPUChainTrackingDebugFlags : uint32_t {
TPCSectorTrackingData = 1,
TPCPreLinks = 2,
TPCLinks = 4,
TPCStartHits = 8,
TPCTracklets = 16,
TPCSectorTracks = 32,
TPCHitWeights = 256,
TPCCompressedClusters = 512,
TPCDecompressedClusters = 1024,
TPCMergingRanges = 2048,
TPCMergingSectorTracks = 4096,
TPCMergingMergedTracks = 8192,
TPCMergingCollectedTracks = 16384,
TPCMergingCE = 32768,
TPCMergingRefit = 65536,
TPCClustererClusters = 131072,
TPCClusterer = 262144,
TPCClustererDigits = 262144 << 1,
TPCClustererPeaks = 262144 << 2,
TPCClustererSuppressedPeaks = 262144 << 3,
TPCClustererChargeMap = 262144 << 4,
TPCClustererZeroedCharges = 262144 << 5
TPCSectorTrackingData = 1 << 0,
TPCPreLinks = 1 << 1,
TPCLinks = 1 << 2,
TPCStartHits = 1 << 3,
TPCTracklets = 1 << 4,
TPCSectorTracks = 1 << 5,
TPCHitWeights = 1 << 6,
TPCMergingRanges = 1 << 7,
TPCMergingSectorTracks = 1 << 8,
TPCMergingMatching = 1 << 9,
TPCMergingCollectedTracks = 1 << 10,
TPCMergingCE = 1 << 11,
TPCMergingPrepareFit = 1 << 12,
TPCMergingRefit = 1 << 13,
TPCMergingLoopers = 1 << 14,
TPCCompressedClusters = 1 << 15,
TPCDecompressedClusters = 1 << 16,
TPCClustererClusters = 1 << 17,
TPCClustererDigits = 1 << 18,
TPCClustererPeaks = 1 << 19,
TPCClustererSuppressedPeaks = 1 << 20,
TPCClustererChargeMap = 1 << 21,
TPCClustererZeroedCharges = 1 << 22
};

template <class T, class S, typename... Args>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ void GPUChainTracking::PrintMemoryStatistics()
addToMap("TPC Sector TrackHits", usageMap, *processors()->tpcTrackers[i].NTrackHits(), processors()->tpcTrackers[i].NMaxTrackHits());
}
addToMap("TPC Clusterer Clusters", usageMap, mRec->MemoryScalers()->nTPCHits, mRec->MemoryScalers()->NTPCClusters(mRec->MemoryScalers()->nTPCdigits));
addToMap("TPC Tracks", usageMap, processors()->tpcMerger.NOutputTracks(), processors()->tpcMerger.NMaxTracks());
addToMap("TPC Tracks", usageMap, processors()->tpcMerger.NMergedTracks(), processors()->tpcMerger.NMaxTracks());
addToMap("TPC TrackHits", usageMap, processors()->tpcMerger.NOutputTrackClusters(), processors()->tpcMerger.NMaxOutputTrackClusters());

if (mRec->GetProcessingSettings().createO2Output) {
Expand Down Expand Up @@ -181,7 +181,7 @@ void GPUChainTracking::PrintMemoryRelations()
GPUInfo("MEMREL SectorTracks NCl %d NTrk %d", processors()->tpcTrackers[i].NHitsTotal(), *processors()->tpcTrackers[i].NTracks());
GPUInfo("MEMREL SectorTrackHits NCl %d NTrkH %d", processors()->tpcTrackers[i].NHitsTotal(), *processors()->tpcTrackers[i].NTrackHits());
}
GPUInfo("MEMREL Tracks NCl %d NTrk %d", processors()->tpcMerger.NMaxClusters(), processors()->tpcMerger.NOutputTracks());
GPUInfo("MEMREL Tracks NCl %d NTrk %d", processors()->tpcMerger.NMaxClusters(), processors()->tpcMerger.NMergedTracks());
GPUInfo("MEMREL TrackHitss NCl %d NTrkH %d", processors()->tpcMerger.NMaxClusters(), processors()->tpcMerger.NOutputTrackClusters());
}

Expand Down
23 changes: 12 additions & 11 deletions GPU/GPUTracking/Global/GPUChainTrackingMerger.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
runKernel<GPUTPCGMMergerMergeWithinPrepare>(GetGridAuto(0, deviceType));
RunTPCTrackingMerger_MergeBorderTracks(1, 0, deviceType);
RunTPCTrackingMerger_Resolve(0, 1, deviceType);
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingMergedTracks, doGPU, Merger, &GPUTPCGMMerger::DumpMergedWithinSectors, *mDebugFile);
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingMatching, doGPU, Merger, &GPUTPCGMMerger::DumpMergedWithinSectors, *mDebugFile);

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

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

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

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

if (doGPU) {
CondWaitEvent(waitForTransfer, &mEvents->single);
Expand All @@ -220,7 +220,7 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
mOutputQueue.clear();
}

runKernel<GPUTPCGMMergerTrackFit>(doGPU ? GetGrid(Merger.NOutputTracks(), 0) : GetGridAuto(0), mergerSortTracks ? 1 : 0);
runKernel<GPUTPCGMMergerTrackFit>(doGPU ? GetGrid(Merger.NMergedTracks(), 0) : GetGridAuto(0), mergerSortTracks ? 1 : 0);
if (param().rec.tpc.retryRefit == 1) {
runKernel<GPUTPCGMMergerTrackFit>(GetGridAuto(0), -1);
}
Expand All @@ -233,13 +233,14 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
runKernel<GPUTPCGMMergerFinalize, 1>(GetGridAuto(0, deviceType));
runKernel<GPUTPCGMMergerFinalize, 2>(GetGridAuto(0, deviceType));
if (param().rec.tpc.mergeLoopersAfterburner) {
runKernel<GPUTPCGMMergerMergeLoopers, 0>(doGPU ? GetGrid(Merger.NOutputTracks(), 0, deviceType) : GetGridAuto(0, deviceType));
runKernel<GPUTPCGMMergerMergeLoopers, 0>(doGPU ? GetGrid(Merger.NMergedTracks(), 0, deviceType) : GetGridAuto(0, deviceType));
if (doGPU) {
TransferMemoryResourceLinkToHost(RecoStep::TPCMerging, Merger.MemoryResMemory(), 0);
SynchronizeStream(0); // TODO: could probably synchronize on an event after runKernel<GPUTPCGMMergerMergeLoopers, 1>
}
runKernel<GPUTPCGMMergerMergeLoopers, 1>(GetGridAuto(0, deviceType));
runKernel<GPUTPCGMMergerMergeLoopers, 2>(doGPU ? GetGrid(Merger.Memory()->nLooperMatchCandidates, 0, deviceType) : GetGridAuto(0, deviceType));
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingLoopers, Merger, &GPUTPCGMMerger::DumpLoopers, *mDebugFile);
}
DoDebugAndDump(RecoStep::TPCMerging, GPUChainTrackingDebugFlags::TPCMergingRefit, doGPU, Merger, &GPUTPCGMMerger::DumpFinal, *mDebugFile);

Expand All @@ -255,10 +256,10 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
throw std::runtime_error("QA Scratch buffer exceeded");
}
}
GPUMemCpy(RecoStep::TPCMerging, Merger.OutputTracks(), MergerShadowAll.OutputTracks(), Merger.NOutputTracks() * sizeof(*Merger.OutputTracks()), outputStream, 0, nullptr, waitEvent);
GPUMemCpy(RecoStep::TPCMerging, Merger.MergedTracks(), MergerShadowAll.MergedTracks(), Merger.NMergedTracks() * sizeof(*Merger.MergedTracks()), outputStream, 0, nullptr, waitEvent);
waitEvent = nullptr;
if (param().dodEdxEnabled) {
GPUMemCpy(RecoStep::TPCMerging, Merger.OutputTracksdEdx(), MergerShadowAll.OutputTracksdEdx(), Merger.NOutputTracks() * sizeof(*Merger.OutputTracksdEdx()), outputStream, 0);
GPUMemCpy(RecoStep::TPCMerging, Merger.MergedTracksdEdx(), MergerShadowAll.MergedTracksdEdx(), Merger.NMergedTracks() * sizeof(*Merger.MergedTracksdEdx()), outputStream, 0);
}
GPUMemCpy(RecoStep::TPCMerging, Merger.Clusters(), MergerShadowAll.Clusters(), Merger.NOutputTrackClusters() * sizeof(*Merger.Clusters()), outputStream, 0);
if (param().par.earlyTpcTransform) {
Expand Down Expand Up @@ -325,8 +326,8 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
mRec->ReturnVolatileDeviceMemory();
}

mIOPtrs.mergedTracks = Merger.OutputTracks();
mIOPtrs.nMergedTracks = Merger.NOutputTracks();
mIOPtrs.mergedTracks = Merger.MergedTracks();
mIOPtrs.nMergedTracks = Merger.NMergedTracks();
mIOPtrs.mergedTrackHits = Merger.Clusters();
mIOPtrs.mergedTrackHitsXYZ = Merger.ClustersXYZ();
mIOPtrs.nMergedTrackHits = Merger.NOutputTrackClusters();
Expand All @@ -339,8 +340,8 @@ int32_t GPUChainTracking::RunTPCTrackingMerger(bool synchronizeOutput)
mIOPtrs.outputTracksTPCO2MC = Merger.OutputTracksTPCO2MC();

if (doGPU) {
processorsShadow()->ioPtrs.mergedTracks = MergerShadow.OutputTracks();
processorsShadow()->ioPtrs.nMergedTracks = Merger.NOutputTracks();
processorsShadow()->ioPtrs.mergedTracks = MergerShadow.MergedTracks();
processorsShadow()->ioPtrs.nMergedTracks = Merger.NMergedTracks();
processorsShadow()->ioPtrs.mergedTrackHits = MergerShadow.Clusters();
processorsShadow()->ioPtrs.mergedTrackHitsXYZ = MergerShadow.ClustersXYZ();
processorsShadow()->ioPtrs.nMergedTrackHits = Merger.NOutputTrackClusters();
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/Global/GPUChainTrackingRefit.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ int32_t GPUChainTracking::RunRefit()
SetupGPUProcessor(&Refit, false);
RefitShadow.SetPtrsFromGPUConstantMem(processorsShadow(), doGPU ? &processorsDevice()->param : nullptr);
RefitShadow.SetPropagator(doGPU ? processorsShadow()->calibObjects.o2Propagator : GetO2Propagator());
RefitShadow.mPTracks = (doGPU ? processorsShadow() : processors())->tpcMerger.OutputTracks();
RefitShadow.mPTracks = (doGPU ? processorsShadow() : processors())->tpcMerger.MergedTracks();
WriteToConstantMemory(RecoStep::Refit, (char*)&processors()->trackingRefit - (char*)processors(), &RefitShadow, sizeof(RefitShadow), 0);
// TransferMemoryResourcesToGPU(RecoStep::Refit, &Refit, 0);
if (param().rec.trackingRefitGPUModel) {
Expand Down
4 changes: 3 additions & 1 deletion GPU/GPUTracking/Global/GPUChainTrackingSectorTracker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,9 @@ int32_t GPUChainTracking::RunTPCTrackingSectors_internal()
}

if (GetProcessingSettings().debugLevel >= 6) {
*mDebugFile << "\n\nReconstruction: Sector " << iSector << "/" << NSECTORS << std::endl;
if ((GetProcessingSettings().debugMask & 63)) {
*mDebugFile << "\n\nReconstruction: Sector " << iSector << "/" << NSECTORS << std::endl;
}
if (GetProcessingSettings().debugMask & GPUChainTrackingDebugFlags::TPCSectorTrackingData) {
if (doGPU) {
TransferMemoryResourcesToHost(RecoStep::TPCSectorTracking, &trk, -1, true);
Expand Down
Loading